Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6804-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX |
Pilson |
Dec 24 2010, 16:59
Пост
#1
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
Предлагаю в этой теме делиться различными скриптами для маленьких и не очень нужд, для облегчения жизни себе, любимым
В основном для Bash, PERL, AWK, но также приветствуется и остальное. |
nerve |
Mar 11 2013, 9:27
Пост
#41
|
Репутация: 282 Постоялец Группа: Пользователи Сообщений: 1 753 С нами с: 5-January 07 |
Yo! чувак, ты гений!!
поменял host-$NOW.tar.gz. на host-$NOW. и все отправилось/принялось сразу) |
santer |
Mar 27 2013, 14:03
Пост
#42
|
Репутация: 78 Активист Группа: Пользователи Сообщений: 320 С нами с: 13-April 08 |
Вопрос от новичка
Скрипт запускается каждый час Например запустился он в 25.03.2013 15:00, нужно что бы он выполнил запрос на получения данных с бд за период времени 25.03.2013 14:00 - 15:00 . Если запустился в 16:00 то выбрать 15:00-16:00 и т.д Каким способом возможно доставать время из системы и дальше передать в переменную ? Зарание благодарен |
baltazor |
Mar 27 2013, 20:13
Пост
#43
|
Благодарности: 26436 Репутация: 526 Смерть - это лишь начало Группа: Модеры Сообщений: 3 612 С нами с: 5-September 07 |
Вопрос от новичка Скрипт запускается каждый час Например запустился он в 25.03.2013 15:00, нужно что бы он выполнил запрос на получения данных с бд за период времени 25.03.2013 14:00 - 15:00 . Если запустился в 16:00 то выбрать 15:00-16:00 и т.д Каким способом возможно доставать время из системы и дальше передать в переменную ? Зарание благодарен date +%k-%M - текущее время на сервере Час назад: date -d '1 hour ago' +%k Сообщение отредактировал baltazor - Mar 27 2013, 20:20 |
artem.ultra |
Sep 10 2013, 15:40
Пост
#44
|
Репутация: 105 Постоялец Группа: Пользователи Сообщений: 1 448 С нами с: 18-March 09 |
помогите сделать скрипт
есть два текстовых файла 1.txt и 2.txt надо провести анализ содержимого двух файлов и если есть одинаковые данные во втором файле, то удалить их в первом. в файлах мейлы клиентов, каждый мейл с новой строки в первом файлы вся база мейлов, во втором не рабочие мейлы |
Dieselist |
Sep 10 2013, 16:11
Пост
#45
|
Репутация: 89 Активист Группа: Пользователи Сообщений: 391 С нами с: 17-January 10 |
помогите сделать скрипт есть два текстовых файла 1.txt и 2.txt надо провести анализ содержимого двух файлов и если есть одинаковые данные во втором файле, то удалить их в первом. в файлах мейлы клиентов, каждый мейл с новой строки в первом файлы вся база мейлов, во втором не рабочие мейлы например так: $ cat mail_cleaner.sh #!/bin/bash sort $1 > /tmp/wholebase.lst sort $2 > /tmp/addresses_to_remove.lst for mail in `comm /tmp/wholebase.lst /tmp/addresses_to_remove.lst -12` do echo "address to remove: $mail" sed -i "/$mail/d" $1 done первым аргументом скрипту скармливаем первый файл (полную базу), вторым - базу с не рабочими мейлами |
Pilson |
Sep 10 2013, 17:28
Пост
#46
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
например так: первым аргументом скрипту скармливаем первый файл (полную базу), вторым - базу с не рабочими мейлами Чего уж тогда просто не читать второй файл построчно и скармливать sed`у эти строки? Найдет совпадение - удалит. Или для каждой строки из второго файла создать правило для sed, через точку с запятой, и не отдать в конце его sed`у. И кстати, правильней будет указывать так: sed -i "/^$mail/d" $1 т.е. поиск строго с начала строки. Иначе возможен вариант когда во втором файле будет например [email protected], а в первом - [email protected], и строка удалится, т.к. проверка была не строгая. |
Dieselist |
Sep 10 2013, 17:48
Пост
#47
|
Репутация: 89 Активист Группа: Пользователи Сообщений: 391 С нами с: 17-January 10 |
Чего уж тогда просто не читать второй файл построчно и скармливать sed`у эти строки? Найдет совпадение - удалит. Или для каждой строки из второго файла создать правило для sed, через точку с запятой, и не отдать в конце его sed`у. первое что пришло в голову И кстати, правильней будет указывать так: sed -i "/^$mail/d" $1 т.е. поиск строго с начала строки. Иначе возможен вариант когда во втором файле будет например [email protected], а в первом - [email protected], и строка удалится, т.к. проверка была не строгая. согласен только если уж пошла такая жара - надо так: sed -i "/^$mail$/d" $1 а то вдруг у нас есть и [email protected] и [email protected] |
artem.ultra |
Sep 10 2013, 20:12
Пост
#48
|
Репутация: 105 Постоялец Группа: Пользователи Сообщений: 1 448 С нами с: 18-March 09 |
ох ребята вас понесло)))
спасибо! завтра утрячком попробую) |
artem.ultra |
Sep 10 2013, 21:47
Пост
#49
|
Репутация: 105 Постоялец Группа: Пользователи Сообщений: 1 448 С нами с: 18-March 09 |
уже пробую!
cat cleaner_mail.sh #!/bin/bash sort $1 > /root/1.txt sort $2 > /root/2.txt for mail in `comm /root/1.txt /root/2.txt -12` do echo "address to remove: $mail" sed -i "/^$mail$/d" $1 файлик /root/1.txt становится пустым в консоли скрипт не заканчивается приходиться ложить его руками |
Dieselist |
Sep 10 2013, 21:56
Пост
#50
|
Репутация: 89 Активист Группа: Пользователи Сообщений: 391 С нами с: 17-January 10 |
уже пробую! cat cleaner_mail.sh #!/bin/bash sort $1 > /root/1.txt sort $2 > /root/2.txt for mail in `comm /root/1.txt /root/2.txt -12` do echo "address to remove: $mail" sed -i "/^$mail$/d" $1 файлик /root/1.txt становится пустым в консоли скрипт не заканчивается приходиться ложить его руками Потому что сам скрипт править не надо было. Оставь скрипт как есть в моем варианте (разве что с правкой предложенной товарщем Pilson, если мейлы и правда могут так совпадать), и вызови скрипт из консоли таким образом: # cleaner_mail.sh /root/1.txt /root/2.txt Если что по прежнему непонятно/ не работает - пиши в ПМ, чтоб не засорять тему. |
Freestyler |
Sep 11 2013, 9:14
Пост
#51
|
Репутация: 150 Cтаршой Группа: Пользователи Сообщений: 917 С нами с: 21-March 07 |
Зачем для такой простой задачи скрипт?
grep -iv -f 2.txt 1.txt > out.txt файл out.txt будет содержать вычтенную информацию с файла 1.txt по списку в файле 2.txt |
nerve |
Sep 11 2013, 16:53
Пост
#52
|
Репутация: 282 Постоялец Группа: Пользователи Сообщений: 1 753 С нами с: 5-January 07 |
$ cat mail1.txt [email protected] [email protected] [email protected] [email protected] $ cat mail2.txt [email protected] [email protected] $ sudo grep -iv -f mail2.txt mail1.txt > mail3.txt && cat mail3.txt [email protected] |
Dieselist |
Sep 11 2013, 17:14
Пост
#53
|
Репутация: 89 Активист Группа: Пользователи Сообщений: 391 С нами с: 17-January 10 |
$ cat mail1.txt [email protected] [email protected] [email protected] [email protected] $ cat mail2.txt [email protected] [email protected] $ sudo grep -iv -f mail2.txt mail1.txt > mail3.txt && cat mail3.txt [email protected] $ grep -ivw -f mail2.txt mail1.txt [email protected] [email protected] |
nerve |
Sep 23 2013, 10:03
Пост
#54
|
Репутация: 282 Постоялец Группа: Пользователи Сообщений: 1 753 С нами с: 5-January 07 |
Функция spentdaily должна выполняться с вторника по субботу, а функция spentweekly только в понедельник. правильно ли я написал условие проверки?
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
Dieselist |
Dec 31 2013, 16:30
Пост
#55
|
Репутация: 89 Активист Группа: Пользователи Сообщений: 391 С нами с: 17-January 10 |
Функция spentdaily должна выполняться с вторника по субботу, а функция spentweekly только в понедельник. правильно ли я написал условие проверки? » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Не лучше ли так? DATE=$(date +%u) case $DATE in [1]) spentweekly;; [2-6]) spentdaily;; esac |
fli |
Aug 18 2014, 20:01
Пост
#56
|
Репутация: 125 Постоялец Группа: Пользователи Сообщений: 1 640 С нами с: 12-November 07 |
Задача: засинкать директорию, удалив содержимое source dir.
rsync -av --remove-source-files src/ dest/ Но при этом зашифровать все файлы gpg. Подскажите, в каком направлении двигаться? UPD. Подсказали: find src/ -type f -exec gpg .... {} \; find src/ -type f ! -name '*.gpg' -exec rm {} \; Сообщение отредактировал fli - Aug 18 2014, 22:04 |
Pilson |
Aug 18 2014, 20:07
Пост
#57
|
Репутация: 383 Selachimorpha Группа: Модеры Сообщений: 2 777 С нами с: 23-May 09 |
Задача: засинкать директорию, удалив содержимое source dir. rsync -av --remove-source-files src/ dest/ Но при этом зашифровать все файлы gpg. Подскажите, в каком направлении двигаться? Эммм... Зашифровать потом перенести/удалить? Сообщение отредактировал Pilson - Aug 18 2014, 20:08 |
artem.ultra |
Sep 30 2014, 11:50
Пост
#58
|
Репутация: 105 Постоялец Группа: Пользователи Сообщений: 1 448 С нами с: 18-March 09 |
пильнул скрипт если можно так назвать))
#!/bin/bash virsh shutdown vm_id && cp /home/vm-pool/vm_id.img /home/vm_id.img-`date +%d-%B-%Y` && virsh start vm_id и вот нужно сделать паузу после virsh shutdown vm_id, 40сек и после virsh start vm_id отправить мейл, о том что копирование завершено. подскажет кто? |
mak_v_ |
Sep 30 2014, 15:01
Пост
#59
|
Репутация: 440 Скорострел Группа: Пользователи Сообщений: 7 453 С нами с: 4-December 11 |
пильнул скрипт если можно так назвать)) #!/bin/bash virsh shutdown vm_id && cp /home/vm-pool/vm_id.img /home/vm_id.img-`date +%d-%B-%Y` && virsh start vm_id и вот нужно сделать паузу после virsh shutdown vm_id, 40сек и после virsh start vm_id отправить мейл, о том что копирование завершено. подскажет кто? && sleep 40 && mail -s "что копирование завершено" [email protected] Сообщение отредактировал mak_v_ - Sep 30 2014, 15:08 |
santer |
Sep 30 2014, 15:14
Пост
#60
|
Репутация: 78 Активист Группа: Пользователи Сообщений: 320 С нами с: 13-April 08 |
пильнул скрипт если можно так назвать)) #!/bin/bash virsh shutdown vm_id && cp /home/vm-pool/vm_id.img /home/vm_id.img-`date +%d-%B-%Y` && virsh start vm_id и вот нужно сделать паузу после virsh shutdown vm_id, 40сек и после virsh start vm_id отправить мейл, о том что копирование завершено. подскажет кто? #!/bin/bash SUBJECT = " " EMAIL = " " EMAILMESSAGE = "/tmp/emailmessage.txt" echo "текст" >> $EMAILMESSAGE virsh shutdown vm_id && cp /home/vm-pool/vm_id.img /home/vm_id.img-`date +%d-%B-%Y` && sleep 40 && virsh start vm_id && /bin/mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE http://postfix.state-of-mind.de/patrick.ko...figuration.html - Как настроить отправку почту через смтп. Это нужно для работы mail -s https://rtcamp.com/tutorials/linux/ubuntu-p...fix-gmail-smtp/ гугловский смтп Сообщение отредактировал santer - Sep 30 2014, 15:24 |
Упрощённая версия | Сейчас: 31st October 2024 - 10:34 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |