qnote:bash
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
qnote:bash [2017/08/01 23:36] – [Потереть данные на диске или флешке] k | qnote:bash [2022/08/10 14:44] (current) – [Записать результат mtr-теста в файл] k | ||
---|---|---|---|
Line 332: | Line 332: | ||
===== Примеры скриптов на bash ===== | ===== Примеры скриптов на bash ===== | ||
+ | |||
+ | ==== Показать текущие pps и bps на интерфейсе | ||
+ | |||
+ | Честно подсмотрел у [[https:// | ||
+ | |||
+ | === pps === | ||
+ | <code bash pps.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | INTERVAL=" | ||
+ | |||
+ | if [ -z " | ||
+ | echo | ||
+ | echo usage: $0 [network-interface] | ||
+ | echo | ||
+ | echo e.g. $0 eth0 | ||
+ | echo | ||
+ | echo shows packets-per-second | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | IF=$1 | ||
+ | |||
+ | while true | ||
+ | do | ||
+ | R1=`cat / | ||
+ | T1=`cat / | ||
+ | sleep $INTERVAL | ||
+ | R2=`cat / | ||
+ | T2=`cat / | ||
+ | TXPPS=`expr $T2 - $T1` | ||
+ | RXPPS=`expr $R2 - $R1` | ||
+ | echo "TX $1: $TXPPS pkts/s RX $1: $RXPPS pkts/ | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | === bps === | ||
+ | <code bash bps.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | |||
+ | if [ -z " | ||
+ | echo | ||
+ | echo usage: $0 network-interface | ||
+ | echo | ||
+ | echo e.g. $0 eth0 | ||
+ | echo | ||
+ | exit | ||
+ | fi | ||
+ | |||
+ | IF=$1 | ||
+ | |||
+ | while true | ||
+ | do | ||
+ | R1=`cat / | ||
+ | T1=`cat / | ||
+ | sleep 1 | ||
+ | R2=`cat / | ||
+ | T2=`cat / | ||
+ | TBPS=`expr $T2 - $T1` | ||
+ | RBPS=`expr $R2 - $R1` | ||
+ | TKBPS=`expr $TBPS / 1024` | ||
+ | RKBPS=`expr $RBPS / 1024` | ||
+ | echo "tx $1: $TKBPS kb/s rx $1: $RKBPS kb/s" | ||
+ | done | ||
+ | </ | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
==== Бэкап linux сервера через rsync и список файлов отправить на почту ==== | ==== Бэкап linux сервера через rsync и список файлов отправить на почту ==== | ||
- | <code bash> | + | <code bash save_san.sh> |
#!/bin/bash | #!/bin/bash | ||
### | ### | ||
Line 369: | Line 439: | ||
==== Локально бекапим linux сервер через rsync ==== | ==== Локально бекапим linux сервер через rsync ==== | ||
- | <code bash> | + | <code bash copy_noc1.sh> |
#!/bin/bash | #!/bin/bash | ||
#backup noc1 to noc1. | #backup noc1 to noc1. | ||
Line 387: | Line 457: | ||
mysqldump -u USERNAME -pPASSWORD viewvc_db > / | mysqldump -u USERNAME -pPASSWORD viewvc_db > / | ||
</ | </ | ||
- | ==== Заархивация данные и скопировать их на FTPS сервер ==== | + | ==== Заархивировать |
- | <code bash> | + | <code bash external_backup.sh> |
#!/bin/bash | #!/bin/bash | ||
Line 417: | Line 487: | ||
==== Заархивировать netflow данные ==== | ==== Заархивировать netflow данные ==== | ||
- | <code bash> | + | <code bash tar-backup-netflow-data.sh> |
#!/bin/bash | #!/bin/bash | ||
Line 502: | Line 572: | ||
fi | fi | ||
</ | </ | ||
+ | |||
+ | Скрипт bash tar-backup-netflow-data-via-ssh.sh позволяет сразу скопировать архив на удаленный сервер по ssh. \\ | ||
+ | Это полезно когда на локальном сервере мало место и некуда записать архив. \\ | ||
+ | Перед запуском скрипта на 1.2.3.4 надо скопиловать ssh ключ3, что бы заходить под пользователем username без пароля. | ||
+ | |||
+ | <code bash tar-backup-netflow-data-via-ssh.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Задаем базовые и стартовые значения переменных. | ||
+ | BASE_NFSEN_BACKUP_DATA_DIR=/ | ||
+ | BASE_TAR_DIR=/ | ||
+ | ROUTER=START-ROUTER | ||
+ | YEAR=START-YEAR | ||
+ | MONTH=START-MONTH | ||
+ | |||
+ | # Выводим имена директорий в виде списка которые будут использоваться в цикле архивирования всех месяцев (MONTH=ALL) | ||
+ | LIST_ONLY_FOLDER_NAME () { | ||
+ | find $BASE_NFSEN_BACKUP_DATA_DIR/ | ||
+ | } | ||
+ | |||
+ | # Формируем справку. | ||
+ | SHOW_HELP () { | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | # Проверям наличие аргументов у скрипта. | ||
+ | if [ $# -eq " | ||
+ | then | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | SHOW_HELP | ||
+ | exit # и выйти | ||
+ | fi | ||
+ | |||
+ | # | ||
+ | while getopts " | ||
+ | do | ||
+ | case $option in | ||
+ | r) ROUTER=$OPTARG;; | ||
+ | y) YEAR=$OPTARG;; | ||
+ | m) MONTH=$OPTARG;; | ||
+ | *) echo " | ||
+ | exit;; # и выходим | ||
+ | esac | ||
+ | done | ||
+ | |||
+ | |||
+ | |||
+ | # Проверяем, | ||
+ | # Если значение переменной совпадает со стартовым значением, | ||
+ | if [ " | ||
+ | then | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | SHOW_HELP | ||
+ | exit | ||
+ | elif [ " | ||
+ | then | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | SHOW_HELP | ||
+ | exit | ||
+ | elif [ " | ||
+ | then | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | SHOW_HELP | ||
+ | exit | ||
+ | elif [ " | ||
+ | # Будет создано столько архивов, | ||
+ | then | ||
+ | for MONTH in `LIST_ONLY_FOLDER_NAME` | ||
+ | do | ||
+ | tar -cjvf - -C $BASE_NFSEN_BACKUP_DATA_DIR $ROUTER/ | ||
+ | done | ||
+ | else # Если с ключем -m был передан конкретный номер месяца, | ||
+ | tar -cjvf - -C $BASE_NFSEN_BACKUP_DATA_DIR $ROUTER/ | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | |||
---- | ---- | ||
Line 543: | Line 705: | ||
# | # | ||
mailx -r root@${serv_name} -s "Exim stats for ${date_minus_1day} from ${serv_name_short}" | mailx -r root@${serv_name} -s "Exim stats for ${date_minus_1day} from ${serv_name_short}" | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Переместить логи nginx старше 2 дней и удалить логи старше 60 дней ==== | ||
+ | |||
+ | <code bash move_and_delete_old_nginx_logs.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | find / | ||
+ | find / | ||
</ | </ | ||
Line 575: | Line 748: | ||
host $url | head -n 1 | host $url | head -n 1 | ||
host www.$url | head -n 1 | host www.$url | head -n 1 | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Записать результат mtr-теста в файл ==== | ||
+ | |||
+ | **Версия для Cenots6** | ||
+ | <code bash mtr_test.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | log_file="/ | ||
+ | |||
+ | echo "#####################" | ||
+ | echo -e "Start time: $(date +" | ||
+ | echo -e "Test address: $1\n" >> $log_file | ||
+ | |||
+ | mtr -o LSR -4 -r -n -c $2 $1 >> $log_file | ||
+ | |||
+ | echo -e " | ||
+ | echo -e "##################### | ||
+ | |||
+ | </ | ||
+ | |||
+ | Результат работы: | ||
+ | < | ||
+ | ##################### | ||
+ | Start time: 20220810 - 00:41:09 | ||
+ | Test address: 77.233.186.43 | ||
+ | |||
+ | HOST: xxx.xxx.pro | ||
+ | 1. 172.20.1.2 | ||
+ | 2. ??? 100.0 | ||
+ | 3. 87.245.233.89 | ||
+ | 4. 87.245.229.187 | ||
+ | 5. ??? 100.0 | ||
+ | 6. 188.170.165.123 | ||
+ | 7. 86.109.222.224 | ||
+ | 8. 77.233.186.43 | ||
+ | |||
+ | Stop time: 20220810 - 00:46:09 | ||
+ | ##################### | ||
+ | </ | ||
+ | |||
+ | **Версия для Cenots7/ | ||
+ | <code bash mtr_test.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | log_file="/ | ||
+ | |||
+ | echo "#####################" | ||
+ | echo -e "Start time: $(date +" | ||
+ | echo -e "Test address: $1\n" >> $log_file | ||
+ | |||
+ | mtr -z -o LSR -b -w -c $2 $1 >> $log_file | ||
+ | |||
+ | echo -e " | ||
+ | echo -e "##################### | ||
+ | </ | ||
+ | |||
+ | Результат работы: | ||
+ | |||
+ | < | ||
+ | ##################### | ||
+ | Start time: 20220810 - 03:51:17 | ||
+ | Test address: 109.73.46.180 | ||
+ | |||
+ | Start: Wed Aug 10 03:51:17 2022 | ||
+ | HOST: noc19 Loss% | ||
+ | 1. AS49505 84.38.180.253 | ||
+ | 2. AS49505 92.53.93.89 | ||
+ | 3. AS29076 ae0-3002.rt2.spb.cloud-ix.net (31.28.18.102) | ||
+ | 4. AS??? ??? | ||
+ | 5. AS29076 mastertel.msk.cloud-ix.net (31.28.19.122) | ||
+ | 6. AS29226 217-67-176-250.in-addr.mastertelecom.ru (217.67.176.250) | ||
+ | 7. AS29226 109-73-46-177.in-addr.mastertelecom.ru (109.73.46.177) | ||
+ | 8. AS29226 mail.frecom.ru (109.73.46.180) | ||
+ | |||
+ | Stop time: 20220810 - 03:56:27 | ||
+ | ##################### | ||
</ | </ |
qnote/bash.1501619794.txt.gz · Last modified: (external edit)