Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения

четверг, 28 января 2016 г.

Полезные команды мониторинга сети

Монитор arp-запросов c определенного хоста
sudo tcpdump -i eth8 -nnev arp or rarp | grep 192.168.0.9
Таблица маршрутов для хоста
route -nC | grep 192.168.0.97
Проверить кто сменил MAC адрес
#Устанавливаем arpwatch
sudo apt-get install arpwatch
#Сохраняем текущую связку IP+MAC
arp -f /root/ipmac.txt
#Позже смотрим кто сменил MAC
arpwatch -i eth0 -m NOMAIL -f /root/arp.dat -n 192.168.0.0/8
tail -f /var/log/arpwatch.log
Монитор активности сети
iftop -i eth0 

пятница, 11 января 2013 г.

Конвертер офисных документов в jpg

Идея:
создать в сети общую папку, в которую могли бы копировать файлы:
PDF, XLS, ODS, ODT, DOC, DOCX, XLSX, PPT

и тут же получать эти файлы в формате JPG

Решение:

1.Создаем скрипт all2jpg

#!/bin/bash
sstr=`echo $1 | sed 's/\./\_/g'`
DIR=/home/user/share/
{
echo "File: $i"
case "$1" in
*.pdf)
convert "$DIR/$1" "$DIR/$sstr.jpg" >> /dev/null 2>&1
sleep 5
rm "$DIR/$1"
;;
*.doc| *.odt| *.ods| *.xls| *.xlsx| *.doc| *.docx| *.ppt)
libreoffice3.6 --headless --convert-to pdf "$DIR/$1"  --outdir "$DIR"
sleep 6
rm "$DIR/$1"
;;
esac
}

2. Мониторинг появления файлов в директории /home/user/share/Сканы/

Для используется incron
sudo apt-get install incron
Добавляем правило в incron
incrontab -e 
/home/user/share/ IN_CREATE /home/user/scripts/all2jpg #$
Все, теперь при создании файла (указанных в скрипте расширений), скрипт будет запущен, и через некоторое время в место этого файла, появится файл jpg

воскресенье, 6 ноября 2011 г.

Одни комбинации клавиш для управления разными плеерами


Часто пользуюсь разными плеерами, vlc для видео, audacious и mpd для музыки, и хочется управлять ими с клавиатуры одинаковыми комбинациями клавиш.

Используя утилиту qdbus, (примеры для разных плееров описал здесь ) можно написать скрипты управления, и привязать их к комбинациям клавиш.

Для плеера audacious можно использовать audtool, описанный в этой статье

Пример скрипта управления громкостью плееров (mpd, audacious, vlc). остальные объединяются аналогично:
#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
volume=`audtool get-volume`
let "vol=$volume $1";
audtool set-volume $vol;
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
volume=`qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.VolumeGet`
let "vol=$volume $1"
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.VolumeSet $vol
else
if `mpc | grep ' - '` | cut -d '-' -f1 > /dev/null
then
mpc volume $1
fi
fi
fi
Пример управление перемоткой:
#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
audtool playback-seek-relative 10
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
pos=`qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.PositionGet`
let pos1=$pos +10000
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.PositionSet $pos1
else
if `mpc | grep ' - '` | cut -d '-' -f1 > /dev/null
then
mpc seek +10
fi
fi
fi
Следующий трек:

#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
dbus-send --dest=org.mpris.audacious /Player org.freedesktop.MediaPlayer.Next
else
if ps aux | grep foobnix | grep -v grep > /dev/null
then
foobnix --next
else
if ps aux | grep banshee | grep -v grep > /dev/null
then
banshee --next
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.Next
else
if `mpc | grep ' - '` | cut -d '-' -f1 > /dev/null
then
mpc next
fi
fi
fi
fi
fi
Пример Плей/Пауза:

 #!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
audtool playback-playpause
else
if ps aux | grep foobnix | grep -v grep > /dev/null
then
foobnix --play-pause
else
if ps aux | grep banshee | grep -v grep > /dev/null
then
banshee --pause
else
if ps aux | grep vlc | grep -v grep > /dev/null
then
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause
else
if `mpc | grep ' - '` | cut -d '-' -f1 >> /dev/null
then
mpc play
fi
fi
fi
fi
fi
Теперь вешаем эти скрипты на комбинации клавиш. Для openbox это делается так:
Открываем файл ~/.config/openbox/rc.xml
и в секцию  <keyboard>  пишем:

<keybind key="C-Up">
      <action name="execute">
        <execute>/home/user/scripts/player/volume +10</execute>
      </action>
    </keybind>
    <keybind key="C-Down">
      <action name="execute">
        <execute>/home/user/scripts/player/volume -10</execute>
      </action>
    </keybind>
<keybind key="C-A-N">
      <action name="execute">
        <execute>/home/user/scripts/player/next</execute>
      </action>
    </keybind>
    <keybind key="C-A-B">
      <action name="execute">
        <execute>/home/user/scripts/player/prev</execute>
      </action>
    </keybind>
    <keybind key="C-A-P">
      <action name="execute">
        <execute>/home/user/scripts/player/playpause</execute>
      </action>
    </keybind>
    <keybind key="C-S-Left">
      <action name="execute">
        <execute>/home/user/scripts/player/seek +10</execute>
      </action>
    </keybind>
    <keybind key="C-S-Right">
      <action name="execute">
        <execute>/home/user/scripts/player/seek -10</execute>
      </action>
    </keybind>

Сохраняем, перезапускаем  DE и можно управлять любым плеером одними и теми же комбинациями.

Управление VLC, Amarok, Kaffine, Clementine, qmmp, guayadeque из консоли


В этом поможет консольная утилита qdbus

Для VLC qdbus org.mpris.vlc /Player
Для Amarok qdbus org.kde.amarok
Для Kaffeine qdbus org.mpris.kaffeine
Для guayadeque qdbus org.mpris.guayadeque
Для Clementine qdbus org.mpris.clementine
Для qmmp qdbus org.mpris.qmmp
Для audacious qdbus org.mpris.audacious

Для xmms2 qdbus org.mpris.xmms2



Пишем в консоле qdbus org.mpris.vlc /Player и получаем:
$ qdbus org.mpris.vlc /Player
Service 'org.mpris.vlc' does not exist.

Ага, забыли запустить плеер, запускаем плеер, и повторяем
userhome@debian:~$ qdbus org.mpris.vlc /Player
method QString org.freedesktop.DBus.Introspectable.Introspect()
signal void org.freedesktop.MediaPlayer.CapsChange(int)
method int org.freedesktop.MediaPlayer.GetCaps()
method void org.freedesktop.MediaPlayer.Next()
method void org.freedesktop.MediaPlayer.Pause()
method void org.freedesktop.MediaPlayer.Play()
method int org.freedesktop.MediaPlayer.PositionGet()
method void org.freedesktop.MediaPlayer.PositionSet(int)
method void org.freedesktop.MediaPlayer.Prev()
method void org.freedesktop.MediaPlayer.Repeat(bool)
method void org.freedesktop.MediaPlayer.Stop()
method int org.freedesktop.MediaPlayer.VolumeGet()
method void org.freedesktop.MediaPlayer.VolumeSet(int)
Как видно есть все для управления. 

Как этот можно использовать?
Например привязать скрипт к комбинации клавиш, и управлять например громкостью в активном плеере:

Перемотка:

 if ps aux | grep vlc | grep -v grep > /dev/null
then
pos=`qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.PositionGet`
let "pos1=$pos 10000"
qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.PositionSet $pos1
fi
Или остановить проигрывание

 if ps aux | grep vlc | grep -v grep > /dev/null
then
qdbus org.mpris.xmms2 /Player org.freedesktop.MediaPlayer.Stop
fi


А может уменьшить громкость одним движением мыши ?
Написать скрипт ~/scripts/volume

if ps aux | grep vlc | grep -v grep > /dev/null
then
volume=`qdbus org.mpris.vlc /Player org.freedesktop.MediaPlayer.VolumeGet`
let "vol=$volume $1"
qdbus org.mpris.clementine /Player org.freedesktop.MediaPlayer.VolumeSet $vol
fi

Установить brightside, и привязать этот скрипт к левому верхнему углу.
Теперь при перемещении курсора в левый верхний угол экрана, громкость уменьшится)

Также можно получать Метаданные проигрываемого трека
qdbus org.mpris.vlc /Player GetMetadata
Что можно использовать например в conky 

четверг, 22 сентября 2011 г.

Монитор доступности серверов в сети


Есть в сети несколько серверов/компьютеров, которые должны быть доступны всегда.
Если они вдруг не доступны, нужно сразу же сообщить об этом.

Для начала разберемся, как отправлять сообщение в jabber

echo "hello from `hostname`" | /usr/bin/sendxmpp -t -u mail@jabber.company -p PaSSWorD /
-s testmessage admin@jabber.company
Где:
-t - указываем использовать SSL соединения
-u mail@jabber.company - JID пользователя
-p PassWorD - это пароль пользователя
-t testmessage - тема сообщения
admin@jabber.company - JID получателя

Взято с http://silinio.webhost.ru/sendxmpp-notify.html


Ну а теперь скрипт который мониторит доступность серверов, и в случае не доступности, шлет сообщение в jabber.
Jabber сервер установлен и настроен.
#!/bin/bash
for i in 192.168.1.1 192.168.1.105;
do
    if eval "ping -c 2 $i"; then
        file="/home/name/scripts/pingserv/pingd/file`echo $i`"
        if [ -e $file ]; then
           rm "/home/name/scripts/pingserv/pingd/file`echo $i`"
           echo "`date` SERVER `echo $i` Is Work =)" | sendxmpp -d -s "Server `echo $i` Work =)" username@jabber > /dev/null 2>&1
        fi
    echo "11" > /dev/null
    else
        file="/home/name/scripts/pingserv/pingd/file`echo $i`"
        if [ -e $file ]; then
          echo "11" > /dev/null
        else
          echo "$i" > /home/name/scripts/pingserv/pingd/ping.log
          echo "`date` SERVER `echo $i` NOT Work!!" | sendxmpp -d -s "Allarm!!! `echo $i` DOWN!!!!" username@jabber > /dev/null 2>&1
          touch "/home/name/scripts/pingserv/pingd/file`echo $i`"
        fi
    fi
done
Засунуть этот скрипт в CRON, и каждые 10 минут запускать.
*/10 * * * * /home/name/scripts/pingserv/pingip > /dev/null 2>&1
Общая идея - пинг серверов, если какой то не доступен, сообщить в jabber.
создать файл c ip сервера, чтобы при следующем пинге, если сервер все еще не доступен, не отсылать повторное сообщение.
Если сервер стал доступен, удалить этот файл и сообщить о доступности сервера.

воскресенье, 7 ноября 2010 г.

Альбомы picasa и yandex

Я уже упоминал о подключении альбомов. Сейчас же добавил некоторую интерактивность.
Пример скрипты для альбома picasa, для yandex точно также .

Первым делом зарегистрировался на vsyc.com.
Указываем в скрипте username и password для входа на vsyc.com
#!/bin/bash
(
VAR=$(expect -c "
spawn mount.davfs https://pub.vsyc.com/picasaweb.google.com/username /media/picasa/
sleep 2
expect \"Username:\"
send \"username_vsyc\r\"
sleep 2
expect \"Password:\"
sleep 2
send \"password_vsyc\r\"
sleep 4
expect \"Accept certificate for this session? \[y,N\]\"
send \"y\r\"
sleep 2
")
Добавил отображение хода монтирования альбома.
А по окончании монтирования добавим диалог с вопросом, нужно ли открыть смонтированный диск.
for i in 1 2 3
do
echo " "; sleep 3;
done
) | if zenity --progress --pulsate --auto-close --title="Picasa" --text="Подключается диск picasa";
then
if zenity --question --text="Диск Picasa смонтирован. Открыть?"; then
sudo pcmanfm /media/picasa
fi
fi

пятница, 5 ноября 2010 г.

Скрипт с диалогом для поиска

Диалог поиска


Результаты поиска

Скрипт:
#!/bin/bash
dialog=`zenity --entry --title="Поиск" --text="Что нужно найти?" --entry-text ""`

str_find=`find / -iname $dialog | zenity --list --title "Search Results" --text "Finding all header files.." --column "Files" --width 600`

cd_file=`echo "$str_find" | rev | cut -d / -f 2- | rev`;

pcmanfm "$cd_file"
Для удобства создадим ссылку на скрипт
cd /usr/bin
sudo ln -s ~/scripts/finds finds
Для openbox'a можно добавить сочетания клавиш, для запуска скрипта
<keybind key="A-C-F">
<action name="execute">
<execute>finds</execute>
</action>
</keybind>

четверг, 4 ноября 2010 г.

Использование expect

Старенький adsl модем, иногда обрывает соединение, и теряет adsl. помогает только перезагрузка.
Для автоматизации этого процесса написал скрипт
#!/usr/bin/expect
set host [lrange $argv 0 0]
set user [lrange $argv 1 1]
set pass [lrange $argv 2 2]

spawn telnet $host
expect "login"
send "$user\r"
expect "Password"
send "$pass\r"
sleep 2
 #expect "#"
send "reboot"
send "\r"
exit
Запускать нужно так:
~/rebootmodem ip_адрес_модема логинн пароль

Еще один пример использования expect:
Монтирования альбомов picasa или yandex с авторизацией:


воскресенье, 7 февраля 2010 г.

Conky. Музыка. playing now

Скрипт отображающий информацию о том, что в данный момент проигрывается

#!/bin/bash
if ps aux | grep audacious | grep -v grep > /dev/null
then
varr=`audtool current-song`
echo "audacious playing now: $varr"
fi

if ps aux | grep mplayer | grep -v grep > /dev/null
then
var1=`cat mplayer.log | grep ICY | cut -d \; -f 1| cut -d = -f 2 | cut -d \' -f 2 | tail -1`;
var4=`cat mplayer.log |grep Artist: | cut -d \: -f 2 | tail -1`;
var7=`cat mplayer.log |grep "Name :" | cut -d \: -f 2 | tail -1`;
var3=`cat mplayer.log |grep Title: | cut -d \: -f 2 | tail -1`;
var5=`cat mplayer.log |grep "info Artist" | cut -d " " -f 6- | tail -n 1`
var6=`cat mplayer.log |grep "info Title" | cut -d " " -f 6- | tail -n 1`

if `cat mplayer.log |grep "info Title" | cut -d " " -f 6- | tail -n 1`
then
echo "mplayer playing now: $var1 $var4 - $var3$var7";
else
echo "mplayer playing now: $var1 $var5 - $var6";
fi
else
if ps aux | grep mpd | grep -v grep > /dev/null
then
var2=`mpc | grep ' - '`
echo "mpd playing now: $var2"
fi

воскресенье, 15 ноября 2009 г.

Редактирование, автодобавление ID3 тегов

Часто встречаются музыкальные записи, без ид'тегов, и хочется их добавить для удобства прослушивания, но савсем не хочется тратить на это время.
Возникла идея автоматизировать этот процесс
1 вариант - когда название файла и есть название трека
2 вариант - когда название файла типа "track 1", но название копозиций можно узнать
Начнем:
для начала, чтобы не забыть метод запуска скрипта, делаем ему справку
теперь вызвав скрипт ~/addtag --help можно будет посмотреть как запускать.

Автоматизация скачивания торрентов

Очень мне хотелось, чтобы новые серии любимых сериалов закачивались автоматически, а мне оставалось только их просмотреть =)

Ниже преведен пример реализации этой задачи, его можно модернизировать использую curl для авторизации на торренте либо использовать куки, у меня пока не получилось. Поэтому использую поиск по рсс ленте торрента, скачиваю торренты, и редактирую их, вставляю свой uid в торрент файл.

Для того чтобы авторизованно захадить и скачивать торрент файлы с трекеров, можно воспользоватся кукисами, тогда строка wget будет иметь вид
wget -nc --append-output=download_torrents.txt --load-cookies=cookies.txt --content-disposition http://host?id=654321&key=123456