Shell Scripts — маленькие упрощалки жизни

Как не трудно догадаться, перед вами моя собственная небольшая коллекция шелл-скриптов. Маленьких, но очень необходимых и весьма приятных вещей. Скрипты тестируются на Ubuntu Desktop (или Debian), CentOS или FreeBSD, в зависимости от целей конкретного скрипта. Разберетесь ;-)

 

Монитор изменений whois-вывода

Сохраняем не вывод, а его размер. Заметим только если он изменился. Иначе будут тревожить изменения даты (last DB update и т.д.). Правда и другие изменения в датах (paid-till и т.д.) тоже не увидим.

#!/bin/sh
# Copyright (c) 2006 Mihail Fedorov, http://mihailfedorov.ru
# $ ./whois.sh domain.tld whois.server.tld e@mail.ru

# change this
WORKDIR="/home/kolo/whoistory"
# thanks

NEWFILE="$WORKDIR/$1.$2"
OLDFILE="$WORKDIR/$1.$2.old"

mv $NEWFILE $OLDFILE 2> /dev/null
whois -h $2 $1 > $NEWFILE 2> /dev/null

oldsize=$(ls -l "$OLDFILE" 2> /dev/null | awk '{print $5}')
newsize=$(ls -l "$NEWFILE" | awk '{print $5}')

if [ "$oldsize" != "$newsize" ]; then
	cat $NEWFILE | mail -s "[Whoistory] $1 updated!" $3
fi
 

Монитор whois-вывода 2.0 beta

Недавно нашел наконец времени, чтоб заставить его работать по базе-текстовику и быть лояльнее к ошибкам.

#!/bin/sh
# Copyright (c) 2006-2010 Mihail Fedorov, http://mihailfedorov.ru
# $ ./whois2.sh

# DB file format:
# domain.ru|whois.ripn.net|e@mail.ru|
# domain.tel|whois.nic.tel|other@ema.il|

# change this
WORKDIR="/home/kolo/bots/whois"
FILE="/home/kolo/bots/whois.db.txt"
FS="|"
# thanks

while read line
do
	# warZ
	DOMAIN=$(echo $line|cut -d$FS -f1)
	SERVER=$(echo $line|cut -d$FS -f2)
	MAIL=$(echo $line|cut -d$FS -f3)

	NEWFILE="$WORKDIR/$DOMAIN.$SERVER.$MAIL"
	OLDFILE="$WORKDIR/$DOMAIN.$SERVER.$MAIL.old"
	touch $NEWFILE

	mv $NEWFILE $OLDFILE 2> /dev/null
	whois -H -h $SERVER $DOMAIN > $NEWFILE 2> /dev/null

	oldsize=$(stat -c %s "$OLDFILE" 2> /dev/null)
	newsize=$(stat -c %s "$NEWFILE")

	if [ "$oldsize" != "$newsize" ] && [ -s $NEWFILE ] ; then
		cat /home/kolo/bots/before.txt $OLDFILE /home/kolo/bots/after.txt $NEWFILE | mail -s "[Whois2] $DOMAIN updated" $MAIL
		# here comes also notifying via Nabaztag API.
		# you don't need this ;)
		# but you can add SMS/Jabber/ICQ
	else
		mv $OLDFILE $NEWFILE 2> /dev/null
	fi
done < $FILE
 

Выдрать название Wi-Fi сети

#!/bin/sh
AP=$(iwconfig wlan1 | grep 'ESSID:' | awk '{print $4}' | sed 's/ESSID://g' | sed 's/"//g')
echo $AP
 

Кукуатор ;)

Авторство принадлежит неизвестному с bash.org.ru.

#!/bin/bash
KUKU=`/bin/date +%I`
while [ $KUKU -gt 0 ]; do
cat /home/kolo/kuku.wav > /dev/dsp
sleep 1
KUKU=$((KUKU-1))
done
 

Batch Rename

Большинство новичков в первую очередь ищут именно этот скрипт…

#!/bin/bash
x=0
for fname in *.jpg
do
  mv $fname `printf "%s.jpg" $x`
  x=$(($x+1))
done
 

Мониторинг серверов (Backend)

Даже слишком простенький backend для мониторинга серверов. Со своей задачей справляется, хотя можно еще много разного и умного накрутить. Идея держать "всегда доступную" информацию через inetd хороша, но в моей задаче не пригодилась.

#!/bin/sh
# Copyright (c) 2008 Mihail Fedorov, http://mihailfedorov.ru
# Severs Monitoring Backend v 0.1

PASS="god" # Pssssswd ;)
PASSMD=`echo $PASS|md5`

SERVER=`hostname`
OS=`uname -a`
RUNNING=`uptime`
CODE="::$SERVER::$OS::$RUNNING::"
CODE64=`echo $CODE|base64`

# Passive way (example) - put this in inetd to some strange port
# echo $CODE64

# Active way - report via crontab to frontend
wget -O /dev/null -q "http://domain.tld/monitoring/frontend.php?p=$PASSMD&info=$CODE64"
 

NabSleep (Nabaztag:tag GoToSleep)

Скрипт для отправки в спячку/побудки WiFi-кролика. Помимо работы из крона, так же, очень часто, бывает нужно отправить его в спячку немедленно. Для этого у меня в GNOME на панельке есть кнопка запускающая скрипт. Удобно, ага.

#!/bin/sh
# XXXXX - serial number (mac)
# YYYYY - token

if [ -e "sleeping" ]; then

	wget -q -O /dev/null "http://api.nabaztag.com/vl/FR/api.jsp?sn=XXXXX&token=YYYYY&action=14"
	rm -f sleeping

else
	wget -q -O /dev/null "http://api.nabaztag.com/vl/FR/api.jsp?sn=XXXXX&token=YYYYY&action=13"
	touch sleeping
fi
 

Еще немнжко чужих скриптов

Я страюсь уважать авторское право людей, написавших эти скрипты. В начале каждого указан автор (если он сам себя указал) и краткая лицензия. Уважайте и вы это.

Просто сайты имеют свойство умирать, а источники теряться. Если Вам вдруг нужен будет автор — проверьте имя автора в гугле.

выбор квартиры на сутки очень просто на сайте Фортлайн , Лучшие пылесосы samsung от интернет-магазина mircen.com.ua. , Для диагноза может потребоваться биопсия почек или предстательной железы , Доступные цены на пеленальный комод на Викимарте , Узнайте сколько стоит ремонт холодильников. Звоните нам , порошковая закраска металла