Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6827-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua

 Скрипты для системных администраторов *NIX, Полезные скрипты для *NIX

Pilson
Dec 24 2010, 16:59
  
Пост #1



Репутация:   383  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 777
С нами с: 23-May 09


Предлагаю в этой теме делиться различными скриптами для маленьких и не очень нужд, для облегчения жизни себе, любимым drinks.gif
В основном для Bash, PERL, AWK, но также приветствуется и остальное.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
5 Страницы  < 1 2 3 4 5 >  
Reply to this topicStart new topic
Ответов(40 - 59)
nerve
Mar 11 2013, 9:27
  
Пост #41



Репутация:   282  
Постоялец
***

Группа: Пользователи
Сообщений: 1 753
С нами с: 5-January 07


Yo! чувак, ты гений!!
поменял host-$NOW.tar.gz. на host-$NOW.
и все отправилось/принялось сразу)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
santer
Mar 27 2013, 14:03
  
Пост #42



Репутация:   78  
Активист
*

Группа: Пользователи
Сообщений: 320
С нами с: 13-April 08
Меценат


Вопрос от новичка d.gif
Скрипт запускается каждый час
Например запустился он в 25.03.2013 15:00, нужно что бы он выполнил запрос на получения данных с бд за период времени 25.03.2013 14:00 - 15:00 . Если запустился в 16:00 то выбрать 15:00-16:00 и т.д
Каким способом возможно доставать время из системы и дальше передать в переменную ? dash2.gif
Зарание благодарен O_o.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
baltazor
Mar 27 2013, 20:13
  
Пост #43

Благодарности: 26436

Репутация:   526  
Смерть - это лишь начало
****

Группа: Модеры
Сообщений: 3 612
С нами с: 5-September 07


(santer @ Mar 27 2013, 14:03) Перейти к цитате

Вопрос от новичка d.gif
Скрипт запускается каждый час
Например запустился он в 25.03.2013 15:00, нужно что бы он выполнил запрос на получения данных с бд за период времени 25.03.2013 14:00 - 15:00 . Если запустился в 16:00 то выбрать 15:00-16:00 и т.д
Каким способом возможно доставать время из системы и дальше передать в переменную ? dash2.gif
Зарание благодарен O_o.gif


date +%k-%M - текущее время на сервере

Час назад:
date -d '1 hour ago' +%k

Сообщение отредактировал baltazor - Mar 27 2013, 20:20
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
artem.ultra
Sep 10 2013, 15:40
  
Пост #44



Репутация:   105  
Постоялец
***

Группа: Пользователи
Сообщений: 1 448
С нами с: 18-March 09


помогите сделать скрипт
есть два текстовых файла 1.txt и 2.txt
надо провести анализ содержимого двух файлов и если есть одинаковые данные во втором файле, то удалить их в первом.
в файлах мейлы клиентов, каждый мейл с новой строки
в первом файлы вся база мейлов, во втором не рабочие мейлы
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Dieselist
Sep 10 2013, 16:11
  
Пост #45



Репутация:   89  
Активист
*

Группа: Пользователи
Сообщений: 391
С нами с: 17-January 10


(artem.ultra @ Sep 10 2013, 16:40) Перейти к цитате

помогите сделать скрипт
есть два текстовых файла 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


первым аргументом скрипту скармливаем первый файл (полную базу), вторым - базу с не рабочими мейлами
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Sep 10 2013, 17:28
  
Пост #46



Репутация:   383  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 777
С нами с: 23-May 09


(Dieselist @ Sep 10 2013, 17:11) Перейти к цитате

например так:

первым аргументом скрипту скармливаем первый файл (полную базу), вторым - базу с не рабочими мейлами

Чего уж тогда просто не читать второй файл построчно и скармливать sed`у эти строки? Найдет совпадение - удалит.

Или для каждой строки из второго файла создать правило для sed, через точку с запятой, и не отдать в конце его sed`у.


И кстати, правильней будет указывать так:
sed -i "/^$mail/d" $1
т.е. поиск строго с начала строки.
Иначе возможен вариант когда во втором файле будет например [email protected], а в первом - [email protected], и строка удалится, т.к. проверка была не строгая.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Dieselist
Sep 10 2013, 17:48
  
Пост #47



Репутация:   89  
Активист
*

Группа: Пользователи
Сообщений: 391
С нами с: 17-January 10


(Pilson @ Sep 10 2013, 18:28) Перейти к цитате

Чего уж тогда просто не читать второй файл построчно и скармливать sed`у эти строки? Найдет совпадение - удалит. Или для каждой строки из второго файла создать правило для sed, через точку с запятой, и не отдать в конце его sed`у.


первое что пришло в голову pardon.gif

(Pilson @ Sep 10 2013, 18:28) Перейти к цитате

И кстати, правильней будет указывать так:
sed -i "/^$mail/d" $1
т.е. поиск строго с начала строки.
Иначе возможен вариант когда во втором файле будет например [email protected], а в первом - [email protected], и строка удалится, т.к. проверка была не строгая.


согласен smile.gif только если уж пошла такая жара - надо так:
sed -i "/^$mail$/d" $1
а то вдруг у нас есть и [email protected] и [email protected] wink.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
artem.ultra
Sep 10 2013, 20:12
  
Пост #48



Репутация:   105  
Постоялец
***

Группа: Пользователи
Сообщений: 1 448
С нами с: 18-March 09


ох ребята вас понесло)))
спасибо!
завтра утрячком попробую)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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 становится пустым

в консоли скрипт не заканчивается приходиться ложить его руками sad.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Dieselist
Sep 10 2013, 21:56
  
Пост #50



Репутация:   89  
Активист
*

Группа: Пользователи
Сообщений: 391
С нами с: 17-January 10


(artem.ultra @ Sep 10 2013, 22:47) Перейти к цитате

уже пробую!
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 становится пустым

в консоли скрипт не заканчивается приходиться ложить его руками sad.gif


Потому что сам скрипт править не надо было. Оставь скрипт как есть в моем варианте (разве что с правкой предложенной товарщем Pilson, если мейлы и правда могут так совпадать), и вызови скрипт из консоли таким образом:
# cleaner_mail.sh /root/1.txt /root/2.txt

Если что по прежнему непонятно/ не работает - пиши в ПМ, чтоб не засорять тему.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Dieselist
Sep 11 2013, 17:14
  
Пост #53



Репутация:   89  
Активист
*

Группа: Пользователи
Сообщений: 391
С нами с: 17-January 10


(nerve @ Sep 11 2013, 17:53) Перейти к цитате

$ 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]
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
nerve
Sep 23 2013, 10:03
  
Пост #54



Репутация:   282  
Постоялец
***

Группа: Пользователи
Сообщений: 1 753
С нами с: 5-January 07


Функция spentdaily должна выполняться с вторника по субботу, а функция spentweekly только в понедельник. правильно ли я написал условие проверки?
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «

User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Dieselist
Dec 31 2013, 16:30
  
Пост #55



Репутация:   89  
Активист
*

Группа: Пользователи
Сообщений: 391
С нами с: 17-January 10


(nerve @ Sep 23 2013, 10:03) Перейти к цитате

Функция spentdaily должна выполняться с вторника по субботу, а функция spentweekly только в понедельник. правильно ли я написал условие проверки?
» Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... «



Не лучше ли так?


DATE=$(date +%u)
case $DATE in
[1]) spentweekly;;
[2-6]) spentdaily;;
esac
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Pilson
Aug 18 2014, 20:07
  
Пост #57



Репутация:   383  
Selachimorpha
****

Группа: Модеры
Сообщений: 2 777
С нами с: 23-May 09


(fli @ Aug 18 2014, 21:01) Перейти к цитате

Задача: засинкать директорию, удалив содержимое source dir.
rsync -av --remove-source-files src/ dest/
Но при этом зашифровать все файлы gpg.
Подскажите, в каком направлении двигаться?

Эммм... Зашифровать потом перенести/удалить?

Сообщение отредактировал Pilson - Aug 18 2014, 20:08
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
artem.ultra
Sep 30 2014, 11:50
  
Пост #58



Репутация:   105  
Постоялец
***

Группа: Пользователи
Сообщений: 1 448
С нами с: 18-March 09


пильнул скрипт smile.gif если можно так назвать))
#!/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 отправить мейл, о том что копирование завершено.
подскажет кто?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mak_v_
Sep 30 2014, 15:01
  
Пост #59



Репутация:   440  
Скорострел
*****

Группа: Пользователи
Сообщений: 7 453
С нами с: 4-December 11


(artem.ultra @ Sep 30 2014, 12:50) Перейти к цитате

пильнул скрипт smile.gif если можно так назвать))
#!/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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
santer
Sep 30 2014, 15:14
  
Пост #60



Репутация:   78  
Активист
*

Группа: Пользователи
Сообщений: 320
С нами с: 13-April 08
Меценат


(artem.ultra @ Sep 30 2014, 12:50) Перейти к цитате

пильнул скрипт smile.gif если можно так назвать))
#!/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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

5 Страницы  < 1 2 3 4 5 >
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 22nd November 2024 - 23:09
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.