Записи с Меткой ‘ Script

зависания модема huawei e1550 — жесткий рестарт

Ubuntu отключение usb модема

Ищем модем:
for device in $(ls /sys/bus/usb/devices/*/product); do echo $device;cat $device;done
Отключаем:
sudo sh -c «echo 0 > /sys/bus/usb/devices/3-1/authorized» (подставляем свой номер)
Включаем:

sudo sh -c «echo 1 > /sys/bus/usb/devices/3-1/authorized»

или
#!/bin/sh
 echo "Выключение питания"
 echo suspend > /sys/bus/usb/devices/1-9/power/level
 sleep 10
 echo "Включение питания"
 echo on > /sys/bus/usb/devices/1-9/power/level

 http://sysadmin.te.ua/linux/usb.html

http://sysadmin.te.ua/linux/usb.html

 

Кулл http://forum.ubuntu.ru/index.php?topic=111137.0

Скомпиленный usbreset

usbreset.tar.gz

 

Учкудук два модема…

Ещё пару слов дополню…
Поставил на систему второй модем для входящих с АллоИнкогнито и тут пришёл он самый… П-ц который: модемы сами по себе менялись местами хлеще акробатов в цирке! При отключении одного — второй норовил переехать на его порты и т.д. и т.п.

А т.к. диалпланы для них в корне разные — надо было как-то решать…
Решение вполне обоснованное для Линукса: порту можно назначить фиксированную “ссылку»!
Т.е. — задаём для модема 1 — порты не ttyUSB1 и 2, а hv0 и hi0 (ХуавейВоис и ХуавейИнфо)!
Как?
Отключаем от компа оба модема, вставляем первый.
Даём с рута в терминале команду dmesg
В ответ вываливается куча всего, но в конце — заветные строки:
[291015.913221] option 1-2:1.0: GSM modem (1-port) converter detected
[291015.913364] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[291015.913926] option 1-2:1.1: GSM modem (1-port) converter detected
[291015.914026] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[291015.916678] option 1-2:1.2: GSM modem (1-port) converter detected
[291015.916812] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2

«Кто есть ху»:
После option идёт идентификатор порта.
1-2 — первый ЮСБ хост, второе устройство
:1.1 — первый порт на этом устройстве.
В следующей строке — инфа на тему того, каким портом стал этот наш внутренний.
Нас интересуют пред-последний и последний — 1 и 2 в данном случае.
1 — порт для голоса, 2 — для данных.
Теперь открываем из под рута для редактирования файл /etc/udev/rules.d/huawei.rules — тут прописываются правила для всея Хуавей-девайсов в системе. Скорее всего он будет пустым.
Вбиваем строчки:
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.1", NAME="%k", SYMLINK+="hv0", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.2", NAME="%k", SYMLINK+="hi0", GROUP="root", MODE="0666"

«Всея устройства на этом конкретном порту отныне и присно зовутся ещё и hv0, а на этом — hi0! Сохраняем, Аминь!»
Повторяем процесс начиная с втыкания для второго модема — появятся ещё две строчки в файле, в которых уже порты от второго модема и hv1 и hi1… Можно так и третий, и сто-тридцать-пятый добавить…

Теперь если выдернуть модемы и вставить, то по команде ls -1 /dev/hv* или ls -1 /dev/hi* — выдаст ВСЕГДА нужный девайс, главное не перепутать разъём на компе!

/etc/asterisk/datacard.conf тоже меняется — вместо безликих
audio=/dev/ttyUSB1 ; tty for audio connection
data=/dev/ttyUSB2 ; tty for AT commands

Появляются
audio=/dev/hv0 ; tty for audio connection
data=/dev/hi0 ; tty for AT commands

Теперь перезагружаем Астериск и ура — путаницы больше не будет!
На этом с железом пока всё.

 

 

huawei e1550 + Smstools3

Конфиги

/etc/smsd.conf

# Example smsd.conf. Read the manual for a description

devices = GSM1
logfile = /var/log/smsd.log
loglevel = 3

outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
incoming = /var/spool/sms/incoming
sent = /var/spool/sms/sent

delaytime = 6
errorsleeptime = 12
blocktime = 180
autosplit = 3
receive_before_send = yes
decode_unicode_text = yes
eventhandler = /etc/sms_events.sh

[GSM1]
#device = /dev/gsmmodem
device = /dev/ttyUSB1
baudrate = 115200
report = yes
rtscts = no
#init = AT+CPMS="SM","SM",""
init = AT+CPMS="SM","SM","SM"
#check_memory_metod = 2
check_memory_method = 31
signal_quality_ber_ignore = yes
incoming = yes
incoming = high

 

/etc/sms_events.sh - исполняет команду по смс вида #/etc/now_time_money.sh

#! /bin/bash

COMMAND_CHAR="#"
#INCOMING_DIR=/var/spool/sms/incoming
ALLOW_PHONES="7916xxxxxxx 7965xxxxxxx"
SEND_BACK_REPORT=NO

[ "$1" = "RECEIVED" ] || exit 0

to_log(){
    text=$1
    export LANG=en_EN
    log_date=`date "+%b %d %H:%M:%S "`
    log_host=`hostname -s`
    echo "$log_date $log_host $text" >> /var/log/smsd.log
}

File=$2

Allow=0
for Phone in $ALLOW_PHONES; do
    cat $File | grep "From: $Phone" > /dev/null 2>&1
    [ $? -eq 0 ] && Allow=1
done;

[ $Allow -eq 0 ] && exit 0

cat $INCOMING_DIR/$File | grep "$COMMAND_CHAR"
[ $? -ne 0 ] && exit 0

FromPhone=`cat $File | grep "From:" | cut -d " " -f2`

command=`cat $File | grep "$COMMAND_CHAR" | cut -d "$COMMAND_CHAR" -f2`
to_log "Incoming command: $command from $FromPhone"
out=`$command`

if [ "$SEND_BACK_REPORT" = "YES" ]; then
    smssend $FromPhone "$out"
    to_log "Send sms to $FromPhone: $out"
fi
rm -f $File
to_log "Deleting file $File"

 

/etc/sms3_monitoring —  рестарт при ошибке железа — cron — */5 *   * * *   root    /etc/sms3_monitoring

#!/bin/bash
rm /root/buffer_sms_file
date=`date`
tail -n5 /var/log/smsd.log > /root/buffer_sms_file
cat /root/buffer_sms_file | grep "Error: Modem is not registered to the network"
if [ $? -eq 0 ]; then
        /etc/init.d/sms3 restart
        tar cvfz /var/log/smsd.log /var/log/sms_erlog_$date.log
        shutdown -rf now
fi

cat /root/buffer_sms_file | grep "Error: registration is denied"
if [ $? -eq 0 ]; then
        /etc/init.d/sms3 restart
        tar cvfz /var/log/smsd.log /var/log/sms_erlog_$date.log
        shutdown -rf now
        fi

cat /root/buffer_sms_file | grep "Modem handler 0 terminated abnormally"
if [ $? -eq 0 ]; then
        /etc/init.d/sms3 restart
        tar cvfz /var/log/smsd.log /var/log/sms_erlog_$date.log
        shutdown -rf now
        fi

cat /root/buffer_sms_file | grep "write_to_modem: error 5: Input/output error"
if [ $? -eq 0 ]; then
        /etc/init.d/sms3 restart
        tar cvfz /var/log/smsd.log /var/log/sms_erlog_$date.log
        shutdown -rf now

        fi
cat /root/buffer_sms_file | grep "Couldn't open serial port /dev/ttyUSB"
if [ $? -eq 0 ]; then
        /etc/init.d/sms3 restart
        tar cvfz /var/log/smsd.log /var/log/sms_erlog_$date.log
        shutdown -rf now
        fi

 

 

 

Bash проверки существования файла, директории, пользователя

Проверка существования файла:
if ! [ -f /path/to/file ]; then
echo 'No file'
fi

Проверка существования директории:
if ! [ -d /path/directory/ ]; then
echo 'No directory'
fi

Проверка существования пользователя:
grep "username:" /etc/passwd >/dev/null
if [ $? -ne 0 ]; then
echo 'No username found'
fi

сравнение целых чисел

-eq
равно

if [ "$a" -eq "$b" ]

-ne
не равноif [ "$a" -ne "$b" ]

-gt
большеif [ "$a" -gt "$b" ]

-ge
больше или равноif [ "$a" -ge "$b" ]

-lt
меньшеif [ "$a" -lt "$b" ]

-le
меньше или равноif [ "$a" -le "$b" ]

<
меньше (внутри двойных круглых скобок )(("$a" < "$b"))

<=
меньше или равно (внутри двойных круглых скобок)(("$a" <= "$b"))

>
больше (внутри двойных круглых скобок)(("$a" > "$b"))

>=
больше или равно (внутри двойных круглых скобок)(("$a" >= "$b"))

сравнение строк

=
равно

if [ "$a" = "$b" ]

==
равноif [ "$a" == "$b" ]

Синоним оператора =.

[[ $a == z* ]]    # истина, если $a начинается с символа "z" (сравнение по шаблону)
[[ $a == "z*" ]]  # истина, если $a равна z*

[ $a == z* ]      # имеют место подстановка имен файлов и разбиение на слова
[ "$a" == "z*" ]  # истина, если $a равна z*

# Спасибо S.C.
!=
не равноif [ "$a" != "$b" ]

Этот оператор используется при поиске по шаблону внутри [[ … ]].

<
меньше, в смысле величины ASCII-кодовif [[ "$a" < "$b" ]]

if [ "$a" \< "$b" ]

Обратите внимание! Символ «<» необходимо экранировать внутри [ ].

>
больше, в смысле величины ASCII-кодовif [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

Обратите внимание! Символ «>» необходимо экранировать внутри [ ].

См. Пример 25-6 относительно применения этого оператора сравнения.

-z
строка «пустая», т.е. имеет нулевую длину
-n
строка не «пустая».

Maldet + в превентивной защите linux

Борьба с вирусами (С помощью утилиты maldet)

Все я думаю уже сталкивались с таким понятием как вирус.
К сожалению, такое действительно есть и ничего с этим не сделаешь.
Maldet — утилита с помощью которой можно найти вирус.Итак, давайте начнем с того как поставить данную утилиту, выполняем:

cd ~
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar xfz maldetect-current.tar.gz
cd maldetect-*
./install.sh

После Вам на экран, если Вы все сделали правильно, будет выведено такое сообщение:

Linux Malware Detect v1.4.1
(C) 2002-2011, R-fx Networks
(C) 2011, Ryan MacDonald
inotifywait (C) 2007, Rohan McGovern
This program may be freely redistributed under the terms of the GNU GPLinstallation completed to /usr/local/maldetect
config file: /usr/local/maldetect/conf.maldet
exec file: /usr/local/maldetect/maldet
exec link: /usr/local/sbin/maldet
exec link: /usr/local/sbin/lmd
cron.daily: /etc/cron.daily/maldetmaldet(5206): {sigup} performing signature update check…
maldet(5206): {sigup} local signature set is version 201205035915
maldet(5206): {sigup} latest signature set already installed

Вот на этом установка завершена, идем дальше.

Для того чтобы:
проверить каталог (директорию), выполняем:

maldet -a /dir

после проверки будет выдан отчет о проверке, для того чтобы его посмотреть, введите:

maldet —report XX

* — XX замените на значение которое будет выдано после проверки дир
обновить базу сигнатур, выполняем:

maldet -u

отправить файл на проверку, на сервер данной утилиты:

maldet -c /dirname/filename.txt

Вот в принципе основные команды для этого всего дела, думаю ясно Вам расписал, и Вы взяли для себя что-то полезное.
Благодарю за внимание.

Спасибо: http://golinux.com.ua/debian/borba-s-virusami-s-pomoschyu-utility-maldet.html

 

Scripts antivirus

root@shop:~# cat scan_update 
#! /bin/bash
date=`date +"%Y_%m_%d"`
DIR=/root/log/$date
mailbox=dmurrdj@gmail.com
num=0

if [ -d /root/log ]; then
        echo "Directory log existing"
else
        mkdir  -p -m 777 /root/log
fi
# Создание папки для логов
	mkdir -p -m 777 $DIR
# Обновление rkhunter
	rkhunter --update | tee $DIR/rkhunter_update.log
# Сканирование rkhunter мини 
	rkhunter -c --sk --rwo --summary | tee $DIR/rkhunter_scan_mini.log
# Сканирование rkhunter полное
	rkhunter -c --sk --summary | tee $DIR/rkhunter_scan_max.log
# Сканирование chrootkit
	chkrootkit | tee $DIR/chrootkit_scan.log
# Включение обновление clamav
	/etc/init.d/clamav-freshclam start | tee $DIR/clamav_update.log
# Обновление баз clamav
	freshclam | tee $DIR/clamav_update.log
# Выключение обновление clamav
	/etc/init.d/clamav-freshclam stop | tee $DIR/clamav_update.log
# Сканирование БЕЗ УДАЛЕНИЯ ФАЙЛОВ
	clamscan -ri --scan-html --scan-elf --scan-pdf --scan-archive --bytecode / | tee $DIR/clamav_scan_wo_del.log
# Включение avg
	/etc/init.d/avgd start | tee $DIR/avg_update.log
# Обновление avg
	avgupdate | tee $DIR/avg_update.log
# Сканирование avg
	avgscan --arc --pup2 --coo --media --ignerrors --report $DIR/avg_scan_wo_del.log  /
# Выключение avg
	/etc/init.d/avgd stop | tee $DIR/avg_update.log

ip_addr=$(ip -4 addr show | tail -n1 | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 3 | cut -d '/' -f 1)  
touch $DIR/summary.txt
chmod 777 $DIR/summary.txt
echo $ip_addr >> $DIR/summary.txt
echo $(hostname) >> $DIR/summary.txt
echo "==============================================================================" >> $DIR/summary.txt
echo "Summary scan" >> $DIR/summary.txt
echo "Scan rkhunter" >> $DIR/summary.txt
tail -n15 $DIR/rkhunter_scan_mini.log | tee $DIR/summary.txt
rootkit_num=$(cat $DIR/rkhunter_scan_mini.log | grep "Possible rootkits:" | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 4)
	if [ $rootkit_num -ne 0 ]; then
	num=$(($num + 1))
	fi
echo "==============================================================================" >> $DIR/summary.txt
# Summary scan Clamav
echo "Scan clamav" >> $DIR/summary.txt
cat $DIR/clamav_scan_wo_del.log >> $DIR/summary.txt
clamav_num=$(cat $DIR/clamav_scan_wo_del.log | grep "Infected files" | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 3)
	if [ $clamav_num -ne 0 ]; then
        num=$(($num + 2))
        fi
echo "==============================================================================" >> $DIR/summary.txt
# Summary scan AVG
echo "Scan AVG" >> $DIR/summary.txt
cat $DIR/avg_scan_wo_del.log >> $DIR/summary.txt
avg_num=$(cat $DIR/avg_scan_wo_del.log | grep "Infections found" |  tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 4 | cut -d "(" -f 1)
        if [ $avg_num -ne 0 ]; then
        num=$(($num + 4))
        fi
echo "==============================================================================" >> $DIR/summary.txt

last -a >> $DIR/summary.txt

# Send Email
#num=$(($rootkit_num + $clamav_num + $avg_num))
case $num in
        "0" )
                cat $DIR/summary.txt | mail -s "NORMAL - $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "1" )
                cat $DIR/summary.txt | mail -s "WARNING - RKHUNTER $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "2" )
                cat $DIR/summary.txt | mail -s "WARNING - CLAMAV $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "3" )
                cat $DIR/summary.txt | mail -s "WARNING - RKHUNTER & CLAMAV $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "4" )
                cat $DIR/summary.txt | mail -s "WARNING - AVG $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "5" )
                cat $DIR/summary.txt | mail -s "WARNING - RKHUNTER & AVG $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "6" )
                cat $DIR/summary.txt | mail -s "WARNING - CLAMAV & AVG $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
        "7" )
                cat $DIR/summary.txt | mail -s "WARNING - RKHUNTER & CLAMAV & AVG $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
	* )
                cat $DIR/summary.txt | mail -s "WARNING - Anknown summary works  $ip_addr $(hostname) - Scan Antivir $ Rootkit" $mailbox
        ;;
esac

# Create log archive
tar cjvf $DIR.tar.bz2 $DIR
rm -r $DIR