Полезные скрипты наструганные на коленке.

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Гость » 2008-01-31 10:54:45

10 оборотов палочки в loading... (/)

Код: Выделить всё

tc=$(tput LE 1)
ast () {
    case $1 in
        \\) ch=\|;;
        \|) ch=/;;
        /)  ch=-;;
        -)  ch=\\
    esac
    echo -n $tc$ch
    sleep 0.01
    [ $((i+=1)) -ne $((4*10)) ] && ast ${ch-/}
}
echo -n 'loading... ( )'
ast
echo
сколько цветов держит терминал

Код: Выделить всё

e_co () {
    echo $(tput AF $1)color#$1
}

tc_co () {
    [ $((i+=1)) -le $(tput Co) ] && e_co $i && tc_co
}

tc_co
поисковики, например gg -w freebsd

Код: Выделить всё

alias browser=w3m
#alias browser="exec emacs -f w3m"                                                                 

getopts adfgrtw o
case $o in
        a) url="http://anidb.net/perl-bin/animedb.pl?show=animelist&do.search=search&adb.search=";;
        d) url="http://en.wiktionary.org/wiki/Special:Search?go=Go&search=";;
        f) url="http://www.freebsd.org/cgi/query-pr-summary.cgi?text=";;
        g) url="http://www.google.com/search?hl=en&safe=off&num=100&ie=utf-8&oe=utf-8&q=";;
        r) url="http://tools.ietf.org/html/rfc";;
        t) url="http://tokyotosho.com/search.php?terms=";;
        w) url="http://en.wikipedia.org/wiki/Special:Search?go=Go&useskin=chick&search=";;
esac
shift $((OPTIND - 1)); OPTIND=1

keywords="$(echo $* | paste -sd+ -)"
browser "$url$keywords"
запуск cнэпшота opera на месте с ограничением на 120мб виртуальной памяти:

Код: Выделить всё

cd ~/local/opera-1772/
eval $(limits -ev120m)
exec ./opera -nomail $@

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Dron
ст. сержант
Сообщения: 373
Зарегистрирован: 2007-08-15 13:36:28
Откуда: Днепропетровск
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Dron » 2008-02-09 19:56:15

Продолжая тему "депингвинятора" :))))
начались проблемки со старым сервачком (вроде с винтом, но как-то странно...) на linux... ядро на нем старое, на новые железки не перенесешь...
Вот и решили парралельно с восстановлением его работоспособности поднять парралельно новый серв ну и на фряхе :)
Учетки на linux все системные, причем половины паролей нету, чтобы завести юзеров по новой...

Вот и родился скриптик :) Формирует master.passwd для фряхи из линуксовых passwd и shadow...

Код: Выделить всё

#!/bin/sh

#### before use this script install John the ripper ####
# cd /usr/ports/security/john
# make install clean
# rehash
#### before use this script install John the ripper ####

## Also u need passwd and shadow files from linux system in this directory ##

unshadow passwd shadow > linux_tmp
cat linux_tmp | awk 'BEGIN { FS = ":" } {printf ("%s:%s:%s:%s::0:0:%s:%s:%s\n", $1, $2, $3, $4, $5, $6, $7); }' >> master.passwd_from-linux
rm linux_tmp

echo "All done. Accounts in master.passwd_from-linux file."
echo "Remove system entries and u can add users to your FreeBSD master.passwd file."
echo "Something like thit will help: cat master.passwd_from-linux >> /etc/master.passwd"
echo "Don't forget add groups and make pwd db by -= pwd_mkdb -p /etc/master.passwd =- ;)"
Та Да...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Alex Keda » 2008-02-20 20:03:25

Код: Выделить всё

hosting$ more /root/scripts/reboot.if.packets.loss.sh
#!/bin/sh

loss_percent="`/sbin/ping -c 100 77.221.149.161 |       \
                /usr/bin/grep "100 packets transmitted" \
                | /usr/bin/awk '{print $7}' |           \
                /usr/bin/tr -d '%' |                    \
                /usr/bin/awk -F '.' '{print $1}'`"

tmp_file="/tmp/ping.tmp"

# test loss percent in this cycle
if [ ${loss_percent} -ge 5 ]
then
        if [ ${loss_percent} -lt 30 ]
        then
                # check previous cycle value
                if [ `/bin/cat ${tmp_file}` -ge 5 ]
                then
                        if [ `/bin/cat ${tmp_file}` -lt 30 ]
                        then
                                # 2 cycle loss packets. need reboot
                                echo "server reboot - many packets loss - ${loss_percent}%" | /usr/bin/mail -s reboot.packets.loss root
                                /sbin/shutdown -r now
                        fi
                fi
        fi
fi

# save value

echo ${loss_percent} > ${tmp_file}

hosting$                                         
подпорка. проверят что теряется неккий процент пакетов (от 5 до 30) - если так - то ребутает тачку.
стоит на этом сервере, пока райвен сетевуху не заменит =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Raven2000
-=_UNIX_=-
Сообщения: 4433
Зарегистрирован: 2006-10-29 17:59:13
Откуда: Там, где нас нет.
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Raven2000 » 2008-04-02 11:20:57

Хз может кому надо создает ssl сертифика и подписывает сам =)

Код: Выделить всё

#!/bin/sh
dir_ssl="/usr/local/etc/apache/ssl"
dir_cert="/usr/local/etc/apache/ssl/cert"
dir_private="/usr/local/etc/apache/ssl/private"

mkdir -p ${dir_cert}
mkdir -p ${dir_private}
chown -R ЮЗЕР:ГРУППА ${dir_ssl}
chmod -R 644 ${dir_ssl}

echo "Создаем секретный RSA ключ (зашифруем в Triple-DES и PEM форматах)(запомним введенную фразу):"
openssl genrsa -rand /dev/random -des3 -out ${dir_private}/server.key 1024

echo "Просматриваем детали вашего RSA ключа (server.key)"
openssl rsa -noout -text -in ${dir_private}/server.key

echo "Создаем расшифрованную версию PEM вашего server.key"
openssl rsa -in ${dir_private}/server.key -out ${dir_private}/server.pem

echo "Создаем файл звапроса сертификата"
openssl req -new -key ${dir_private}/server.pem -out ${dir_cert}/server.crt

echo "Самостоятельно подпишем запрос на сертификат"
openssl x509 -req -days 3650 -in ${dir_cert}/server.crt -signkey ${dir_private}/server.key -out ${dir_cert}/server.crt

echo "Детали запроса на подписку сертификата"
openssl x509 -noout -text -in ${dir_cert}/server.crt

exit 0
Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

lazyklim
проходил мимо

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение lazyklim » 2008-05-30 12:06:57

закачка локализаций для браузера Opera

Код: Выделить всё

OPERALNGURL="http://www.opera.com/download/languagefiles"
OPERALNGDIR="/usr/local/share/opera/locale/"
#VERSION=`opera --version| grep Opera | awk {'print $2'} | sed 's/\.//'`
VERSION=`opera --version| grep Opera | cut -c 7,9-10`

mkdir -p $OPERALNGDIR
eval wget -nd -r -l1 -P ${OPERALNGDIR} -A "ouw$VERSION*.lng" -R "index." $OPERALNGURL
cd ${OPERALNGDIR}
rm robots.* 

for LNG_FILE in ouw${VERSION}_??.lng
do
        #NOTE:for 3-digit $VERSION only
        LNG_SUB=`echo $LNG_FILE | cut -c 8-9` 
        mkdir -p $LNG_SUB
        mv $LNG_FILE $LNG_SUB/
done

for LNG_FILE in ouw${VERSION}*
do
        LNG_SMALL=`echo $LNG_FILE | cut -c 8-9`
        LNG_BIG=`echo $LNG_FILE | cut -c 11-12 | tr '[:lower:]' '[:upper:]'`
        LNG_SUB=${LNG_SMALL}_${LNG_BIG}
        mkdir -p ${LNG_SUB}
        mv $LNG_FILE $LNG_SUB/ 
done    

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение f_andrey » 2008-06-10 13:43:38

Пробежало тут в гугл ридере замечательная вешь
Преобразование ODT документов в plaintext

Код: Выделить всё

#!/bin/sh

unzip -p "$1" content.xml | xml sel -N text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" -T -t -m '//text:p' -v . -n | less
необходимо установить пакет textproc/xmlstarlet
Рецепт подсмотрен у советы.блогспот.ком проверен и оптимизирован под freebsd работает :)
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение weec » 2008-08-26 14:30:47

нарыл тут http://www.linux.com/articles/141921#commentthis
одностроковый скрипт для скорого копирования файлов между двумя машинами с использованием netcat
I woudn't see a direct advantage, but you could e.g. use the tar together with netcat to do a fast copy (without scp) over the network:

on the target machine:

Код: Выделить всё

netcat -l -p 2345 | tar xf -
on the sending machine:

Код: Выделить всё

tar cpf - . | netcat target_ip 2345
Advantage is that you get maximum speed with low CPU utilization. However in a hostile environment you may prefer scp...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Alex Keda » 2008-09-16 21:58:01

статистика по апачу.
собирается по логам нгинкса.

Код: Выделить всё

serv# cat /root/scripts/httpd.stat.sh
#!/bin/sh

# лимит строк
limit="51"
log_zip="/var/log/httpd/nginx-access.log.0.gz"
log="/tmp/log.$$"
tmp_file0="/tmp/0.$$.tmp"
tmp_file1="/tmp/1.$$.tmp"
tmp_file2="/tmp/2.$$.tmp"

out_file="/tmp/out.$$.tmp"
out_file="/var/www/html/stat.html"

# распаковываем архив
/usr/bin/gunzip --stdout $log_zip | /usr/bin/grep ^[0-9] > $log
# выбираем все домены, отсортированные по числу хитов
/bin/cat $log | /usr/bin/awk '{print $3}' | /usr/bin/sort |     \
        /usr/bin/uniq -c | /usr/bin/sort -r -g |                \
        /usr/bin/awk '{print $2}' > $tmp_file1

# шапка
echo "Statistic for: `date -v-1d +'%Y-%m-%d'` <br><br>" > $out_file
echo "<b>Summary statistic:</b><br>" >> $out_file

# число строк - общее число хитов
echo "<b>Hits:</b>" >> $out_file
/bin/cat $log | /usr/bin/wc -l >> $out_file

# выбираем IP, сортируем, выбираем уникальные, считаем - это хосты
echo "<br><b>Hosts:</b>" >> $out_file
/bin/cat $log | /usr/bin/awk '{print $1}' |     \
        /usr/bin/sort | /usr/bin/uniq | /usr/bin/wc -l >> $out_file

# шапка таблицы
echo "<br><table border=1>" >> $out_file
echo "<tr><td><CENTER><b>#</CENTER><b></td>
<td><CENTER><b>domain</CENTER><b></td>
<td><CENTER><b>hosts<b></CENTER></td>
<td><b><CENTER>hits</CENTER><b></td></tr>" >> $out_file

# много доменов где 1 запрос всего...
# ограничиваем первой сотней. или даже меньше
i=1
/bin/cat $tmp_file1 |
{
while read domain
do
        # достаём в отдельный файл логи по текущему домену
        /bin/cat $log | /usr/bin/grep " $domain " > $tmp_file2

        echo "<tr><td><CENTER>$i<CENTER></td>" >> $out_file
        echo "<td><CENTER>" >> $out_file

        echo "$domain" >> $out_file

        echo "</CENTER></td><td><CENTER>" >> $out_file
        # хосты
        /bin/cat $tmp_file2 | /usr/bin/awk '{print $1}' |       \
        /usr/bin/sort -g | /usr/bin/uniq -c | /usr/bin/wc -l >> $out_file

        echo "</CENTER></td><td><CENTER>" >> $out_file
        # Хиты
        /bin/cat $tmp_file2 | /usr/bin/wc -l >> $out_file

        echo "</CENTER></td></tr>" >> $out_file
        echo "<!-- $i generated: `date` -->" >> $out_file

        # докидываем счётчик
        i="`expr $i + 1`"
        # проверяем ограничение
        if [ $i -eq $limit ]
        then
                break
        fi
done
}

# закрываем таблицу
echo "</TABLE>" >> $out_file

# удаляем временные файлы
rm -f $tmp_file0
rm -f $tmp_file1
rm -f $tmp_file2
rm -f $log

формал логов нгинкса такой:

Код: Выделить всё

      log_format main      '$remote_addr - $host [$time_local] '
                               '"$request" $status $bytes_sent '
                                  '"$http_referer" "$http_user_agent"';
http://serv.hos-ting.ru/stat.html - пример
Убей их всех! Бог потом рассортирует...

Аватара пользователя
FenX
ст. прапорщик
Сообщения: 513
Зарегистрирован: 2008-04-23 17:46:53
Откуда: Moscow
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение FenX » 2008-10-03 0:52:24

Ну внесу и немного своего,авось пригодиЦо кому :)

Предыстория:
Работаю в компании, занимающейся IT оутсерсингом.
Обслуживаем много офисов, везде есть шлюзы на фряхах и ессно везде есть порт мап на рдп 2к3 винды...
Ну и поставили передо мной задачу:
Ограничить доступ к рдп - т.е .разрешить коннект только для наших IPов...
Т.к. шлюзов много, каждый раз при добавлении\удалении\изменении хотя бы одного ip
лазить по всем шлюзам и переписывать переменные меня не вставляло...
Посему накатал небольшой скрипт, который стягивает с хоста тхт`шник с перечнем ипов и их обрабатывает.

Вот собственно он:
$ cat /etc/ipfw_tbls.sh

Код: Выделить всё

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

url="http://my_host/allow_ip.txt"
txt="/etc/allow_ip.txt"
tmp="/tmp/allow_ip.txt"

case $1 in
	'start')
		ipfw table 1 flush
		cat $txt | while read ip; do
			ipfw table 1 add $ip
		done
;;
	'update')
		fetch -m -o $tmp $url > /dev/null 2>&1
		cmp $txt $tmp > /dev/null 2>&1

		if [ $? != 0 ]; then
			rm $txt ; cp $tmp $txt
			ipfw table 1 flush
			cat $txt | while read ip; do
				ipfw table 1 add $ip
			done
		fi
;;
	*)
		echo "usage: $0 { start | update }";
;;
esac
Осталось только в скрипт с правилами ipfw добавить строки:

Код: Выделить всё

/etc/ipfw_tbls.sh start

ipfw add allow tcp from "table(1)" to $w2k3 3389 via $lw
$lw - внешний интерфейс
$w2k3 - внутренний IP машины, на которую идёт редирект.

Ну и в крон вызов раз в минуту с параметром update

З.Ы.
Сильно не пинайте за неграмотность :)))
На шелле я только начал писать и ещё мало догоняю что тут и зачем :))
Последний раз редактировалось FenX 2008-10-03 15:30:49, всего редактировалось 2 раза.

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение MAK » 2008-10-03 15:19:06

lissyara писал(а):статистика по апачу.
собирается по логам нгинкса.
nginx можно заставить писать логи "как апач". а к апачевским логам уже куча прог, в том числе и на сях.

ЭлизабетСуон
проходил мимо

Благодарность

Непрочитанное сообщение ЭлизабетСуон » 2008-10-17 17:41:33

Всем привет...
Интересный у вас сайт.
Теперь на forum.lissyara.su буду чаще заходить

Гость
проходил мимо

Re:

Непрочитанное сообщение Гость » 2008-11-17 15:41:00

использую ipnat вместо natd
настроил
выглядит вот так

Код: Выделить всё

#! /bin/sh
route="/sbin/route"
ping="/sbin/ping"
ipnat="/sbin/ipnat"
sleep="/bin/sleep"
touch="/usr/bin/touch"
# внешние сетевые карты
GW1=195.189.135.233
GW2=212.22.81.1
$ping -q -c 2 $GW1 > /dev/null 2>&1
# esli kod pinga 1 = error
if [ $? !=0 ]; then
        # pinguem 2 kanal
        $ping -q -c 2 $GW2 > /dev/null 2>&1
        # еesli kod true =0
        if [ $? =0 ]; then
                # Если файла gw2.changed нет, создаем его.
                # Он определяет переход на основной канал,
                # даже если есть и резервный
                # GW2 будет маршрутом по умолчанию
                if [ ! -f /tmp/gw2.changed ]; then
                $route delete default
                $route add default $GW2
                $touch /tmp/gw2.changed
                $sleep 15
                $ipnat -CF -f /etc/ipnat.rules.GW2
		echo Канал 1 не доступен, был переключен на резерв `date` >> /var/log/internet.log
                exit 0;
                fi
        else
              echo Оба канала не доступны `date` >> /var/log/internet.log
		  exit 1;
        fi
else
        # Если пинганулся первый шлюз
        # Если файл gw2.changed найден, удаляем его
        # GW1 будет маршрутом по умолчанию
        if [ -f /tmp/gw2.changed ]; then
                $route delete default
                $route add default $GW1
                $rm /tmp/gw2.changed
                $sleep 15
                $ipnat -CF -f /etc/ipnat.rules.GW1
                exit 0;
        fi
        echo "10";
       
exit 0;
fi

а рунается вот как
i

Код: Выделить всё

nternet# ./switch.sh
[: 0: unexpected operator
10
Последний раз редактировалось manefesto 2008-11-25 11:43:20, всего редактировалось 1 раз.
Причина: Убедительная просьба юзать теги [code] при оформлении листингов.

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение zingel » 2008-11-18 10:16:06

^ оформите своё сообщение нормально.
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение ProFTP » 2008-11-30 2:37:19

нужен кому-то скрипт для просмотров логов с /var/log в реальном времени через веб, с поиском???

скрипт запускается через крон каждые 3 минуты и берет новые данные из файла и записывает в бд...

(для себя написал)
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Andy
ст. лейтенант
Сообщения: 1117
Зарегистрирован: 2007-03-04 7:48:58
Откуда: Mytischi

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Andy » 2008-11-30 16:20:19

ProFTP писал(а):нужен кому-то скрипт для просмотров логов с /var/log в реальном времени через веб, с поиском???
Тут не спрашивают, тут кидают, что бы самим взять в будущем или кто другой мог. Если у каждого спрашивать, то вообще
ничего не сделаешь. Нужен, кидай.
Jul 16 19:37:15 freebsd sshd[4152]: Invalid user idiot from 210.75.200.104

Аватара пользователя
FenX
ст. прапорщик
Сообщения: 513
Зарегистрирован: 2008-04-23 17:46:53
Откуда: Moscow
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение FenX » 2008-12-01 0:01:04

Гость,
замени

Код: Выделить всё

if [ $? !=0 ]; then
на

Код: Выделить всё

if [ $? != 0 ]; then
и

Код: Выделить всё

if [ $? =0 ]; then
замени на

Код: Выделить всё

if [ $? = 0 ]; then

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение ProFTP » 2008-12-01 12:55:55

Код: Выделить всё

#!/usr/bin/perl
use DBI;
use Fcntl ':flock';
my $log = '/var/log/maillog';
open LOG, '<', $log or die "Can't open $log: $!\n";
flock(LOG,LOCK_EX);
my $pos = 0;
$pos = do {chomp; $_} while <DATA>;
seek LOG, $pos, 0 if $pos <= -s $log;

$dbh = DBI->connect("DBI:mysql:host=localhost;database=db","login","pass") 
    or die "Нет доступа к СУБД!";
$insert = "INSERT INTO maillog (data,text) VALUES(?,?)";
$sth = $dbh->prepare("$insert");


while ($line = <LOG>)
{
  my ($month, $day, $time, $hostname, $servicename) = split / /, $line, 5;

$timedata="$month $day $time";
$text = "$hostname $servicename";

$sth->execute($timedata,$text);
}

$sth->finish;
$dbh->disconnect;


$pos = tell LOG;
flock(LOG,LOCK_UN);
close LOG;
exec qw(perl -0777 -i -pe), 's/$/\n'.$pos.'/', $0;
__DATA__
0
вот сам скрипт
ну и вывести надо
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение ProFTP » 2008-12-07 19:48:08

Andy писал(а): Нужен, кидай.
goto http://forum.lissyara.su/viewtopic.php?f=20&t=12348

там можно зайти под Админом и в секции Log MTA и посмотреть как логи рекурсивно валятся
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Гость
проходил мимо

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Гость » 2009-01-13 1:42:57

древний скриптец для cross-binutils, кой использую в купе с gcc44 для -msse4.1 и прочих прелестей для компиляции мультимедиа софта (mplayer-svn, x264-git, xorg, etc.). Обычно make installworld переписывает бинарники, поэтому я его пускаю после установки мира:

Код: Выделить всё

(~)! ./binutils-ren.csh
usage: binutils-ren.csh n|r
        n - normal mode
        r - reverse mode
(~)! ./binutils-ren.csh n
/usr/bin/addr2line -> /usr/bin/addr2line.orig
/usr/bin/addr2line -> /usr/local/bin/amd64-freebsd-addr2line
/usr/bin/ar -> /usr/bin/ar.orig
/usr/bin/ar -> /usr/local/bin/amd64-freebsd-ar
/usr/bin/as -> /usr/bin/as.orig
/usr/bin/as -> /usr/local/bin/amd64-freebsd-as
/usr/bin/c++filt -> /usr/bin/c++filt.orig
/usr/bin/c++filt -> /usr/local/bin/amd64-freebsd-c++filt
/usr/bin/gprof -> /usr/bin/gprof.orig
/usr/bin/gprof -> /usr/local/bin/amd64-freebsd-gprof
/usr/bin/nm -> /usr/bin/nm.orig
/usr/bin/nm -> /usr/local/bin/amd64-freebsd-nm
/usr/bin/objcopy -> /usr/bin/objcopy.orig
/usr/bin/objcopy -> /usr/local/bin/amd64-freebsd-objcopy
/usr/bin/objdump -> /usr/bin/objdump.orig
/usr/bin/objdump -> /usr/local/bin/amd64-freebsd-objdump
/usr/bin/ranlib -> /usr/bin/ranlib.orig
/usr/bin/ranlib -> /usr/local/bin/amd64-freebsd-ranlib
/usr/bin/readelf -> /usr/bin/readelf.orig
/usr/bin/readelf -> /usr/local/bin/amd64-freebsd-readelf
/usr/bin/size -> /usr/bin/size.orig
/usr/bin/size -> /usr/local/bin/amd64-freebsd-size
/usr/bin/strings -> /usr/bin/strings.orig
/usr/bin/strings -> /usr/local/bin/amd64-freebsd-strings
/usr/bin/strip -> /usr/bin/strip.orig
/usr/bin/strip -> /usr/local/bin/amd64-freebsd-strip
(~)! ./binutils-ren.csh r
/usr/bin/addr2line.orig -> /usr/bin/addr2line
/usr/bin/ar.orig -> /usr/bin/ar
/usr/bin/as.orig -> /usr/bin/as
/usr/bin/c++filt.orig -> /usr/bin/c++filt
/usr/bin/gprof.orig -> /usr/bin/gprof
/usr/bin/nm.orig -> /usr/bin/nm
/usr/bin/objcopy.orig -> /usr/bin/objcopy
/usr/bin/objdump.orig -> /usr/bin/objdump
/usr/bin/ranlib.orig -> /usr/bin/ranlib
/usr/bin/readelf.orig -> /usr/bin/readelf
/usr/bin/size.orig -> /usr/bin/size
/usr/bin/strings.orig -> /usr/bin/strings
/usr/bin/strip.orig -> /usr/bin/strip
код:

Код: Выделить всё

#! /bin/tcsh -f

set prefix=/usr/local/bin/amd64-freebsd-
set where=/usr/bin/
# omit ld(1), it doesn't work
set list=( addr2line ar as c++filt \
	   gprof nm objcopy objdump \
	   ranlib readelf size strings \
	   strip )

switch ($argv)
    case n:
	foreach fname ( $list )
	    mv -v $where$fname{,.orig} && \
	    ln -vs $prefix$fname /usr/bin/$fname
	end
	breaksw
    case r:
	foreach fname ( $list )
	    mv -v $where$fname{.orig,}
	end
	breaksw
    default:
	echo usage: $0:t n\|r
	echo \	n - normal mode
	echo \	r - reverse mode
endsw
ps, Ы, что может быть проще такого скрипта? ;)

Аватара пользователя
RusBiT
лейтенант
Сообщения: 635
Зарегистрирован: 2007-08-03 11:43:53
Откуда: Красноярск
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение RusBiT » 2009-02-01 15:04:12

Есть два интернет канала, один стабильный , второй гораздо дешевле, но стабильность храмает.
Скрипт перекидования клиентов с ната нестабильного канала

Код: Выделить всё

#!/bin/sh

GW1=213.228.116.38

PING="/sbin/ping -q -c 3";
FW="/sbin/ipfw";
ADSL_RULE="5101 5201 5301";

pinger(){
$PING $GW1 > /dev/null 2>&1
if [ $? != 0 ]; then
    #echo "no ping";
    $FW list $ADSL_RULE >/dev/null 2>&1 && stop
else
    #echo "yes ping";
    $FW list $ADSL_RULE >/dev/null 2>&1 || start
fi
}

stop(){
    $FW delete $ADSL_RULE >/dev/null
    logger "pinger adsl down";
}

start(){
    #ADSL RULE
    $FW 5101 add divert 8669 ip from 192.168.11.0/24 to any out xmit rl1 >/dev/null
    $FW 5201 add fwd 10.0.7.7 ip from 10.0.7.5 to any out xmit rl1 >/dev/null
    $FW 5301 add divert 8669 ip from any to 10.0.7.5 in via rl0 >/dev/null
    logger "pinger adsl up";
}

###use
if [ "$1" = "start" ]
    then
    start
elif [ "$1" = "stop" ]
    then
    stop
elif [ "$1" = "pinger" ]
    then
    pinger
else echo "Use: stop start pinger";
fi
Чем больше я познаю FreeBSD, тем больше я считаю себя ламером :)

Аватара пользователя
Grishun_U_S
сержант
Сообщения: 221
Зарегистрирован: 2008-04-12 18:26:54
Откуда: Samara
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Grishun_U_S » 2009-02-05 10:10:22

Скрипт пишет вывод ifconfig в файл и выклдывает его на ftp сервер. Я с помощью этого скрипта узнаю выданный шлюзу адрес чтобы приконнектиться к нему по ssh. Будет полезен тем, кто имеет дело с белыми динамическими адресами.

Код: Выделить всё

#!/bin/sh

/sbin/ifconfig > /tmp/newaddress
/usr/bin/ftp -u ftp://USER:PASSW@my.ftpserver.ru/www/newaddress /tmp/newaddress 
Изображение

Аватара пользователя
LimpTeaM
сержант
Сообщения: 236
Зарегистрирован: 2007-10-04 16:26:21

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение LimpTeaM » 2009-02-05 13:11:18

Скрипт добавления нового почтового ящика для postfix (виртуальные домены). подаправить только под себя нужно :)
использование: ./create_mail test test.ru

Код: Выделить всё

#!/bin/sh
if [ -z "$1" ]; then
    echo нужно ввести имя пользователя
    exit
fi
if [ -z "$2" ]; then
    echo нужно ввести домен
    exit
fi

echo  $1@$2 $2/$1/  >> /usr/local/etc/postfix/vmailbox
postmap /usr/local/etc/postfix/vmailbox
echo $1@$2::5000:5000 >> /usr/local/etc/dovecotusers
echo -n $1@$2: >> /usr/local/etc/dovecotpasswd
dovecotpw -s DIGEST-MD5 -u $1@$2 >> /usr/local/etc/dovecotpasswd

Darwin.ggl
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-02-13 10:55:50

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Darwin.ggl » 2009-02-13 11:13:16

Немного моих скриптов :)

UNIX-Day, 13 Feb 2009. Скрипт показывающий сколько секунд осталось до UNIX-дня :)
(актуален до 13 февраля :))

Код: Выделить всё

#!/bin/sh

cur=`date +%s`

case $cur in
1234567880) echo "10 СЕКУНД!!!"; printf "\a";;
1234567881) echo "9 СЕКУНД!!!"; printf "\a" ;;
1234567882) echo "8 СЕКУНД!!!"; printf "\a ";;
1234567883) echo "7 СЕКУНД!!!"; printf "\a" ;;
1234567884) echo "6 СЕКУНД!!!"; printf "\a" ;;
1234567885) echo "5 СЕКУНД!!!"; printf "\a" ;;
1234567886) echo "4 CЕКУНДЫ!!!!"; printf "\a" ;;
1234567887) echo "3 СЕКУНДЫ!!!!"; printf "\a" ;;
1234567888) echo "2 СЕКУНДЫ!!!!!!"; printf "\a" ;;
1234567889) echo "1 СЕКУНДА!!!!"; printf "\a" ;;
1234567890) echo "THE UNIX DAY!"; printf "\a"; printf "\a"; printf "\a"; sleep 10 ;;
*) echo "До дня UNIX'а осталось: $((1234567890-$cur)) секунд" ;;
esac
Скрипт для коннекта к GPRS по блутузу

Код: Выделить всё

#!/bin/sh

# test for root user.
root=`whoami`
if [ $root != "root" ]; then
echo "Run $0 as root"
exit 64
fi
if test -z $1; then
echo "Usage: $0 BTHOST [-s]"
exit 1
fi
ubt=`dmesg | grep ubt`
case $ubt in
*ubt0*) echo "Detected! It's ubt0 device."; ubt="0" ;;
*ubt1*) echo "Detected! It's ubt1 device."; ubt="1" ;;
*ubt2*) echo "Detected! It's ubt2 device."; ubt="2" ;;
*) echo "NO DEVICE FOUND!"; exit ;;
esac

if test $2 ='-s'
then
echo -n "Поднимаем стек блутуза..."; /etc/rc.d/bluetooth start ubt$ubt && echo "Done." || echo "False. Exit"
fi
echo -n "Звоним прову с $1 ... "; `rfcomm_pppd -a $1 -c -C dun -l rfcomm-dialup` &&  echo "Done." || echo "False`exit`"
echo -n "Тестим коннект... "
sleep 20
inet=`ping -c3 google.com | grep 64`
case $inet in
*time*) echo "Work.";;
*) echo "Not work.";;
esac

exit 0

Darwin.ggl
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-02-13 10:55:50

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Darwin.ggl » 2009-02-13 11:36:09

Grishun_U_S писал(а):Скрипт пишет вывод ifconfig в файл и выклдывает его на ftp сервер. Я с помощью этого скрипта узнаю выданный шлюзу адрес чтобы приконнектиться к нему по ssh. Будет полезен тем, кто имеет дело с белыми динамическими адресами.

Код: Выделить всё

#!/bin/sh

/sbin/ifconfig > /tmp/newaddress
/usr/bin/ftp -u ftp://USER:PASSW@my.ftpserver.ru/www/newaddress /tmp/newaddress 
Зачем так?!
Вот так лудше)
Запускать из крона, раз в сутки гдето.

Код: Выделить всё

#!/bin/sh
time=`date +%v`
dev="rl0"
echo "<html><head><title>IP</title></head><body><center><font size=7>Дата: ${time} IP: `ifconfig ${dev} | grep inet | awk '{print $2}'`</font></center></body><html>" > /tmp/newaddress
ftp -u ftp://USER:PASSW@my.ftpserver.ru/www/newaddress /tmp/newaddress


Аватара пользователя
Grishun_U_S
сержант
Сообщения: 221
Зарегистрирован: 2008-04-12 18:26:54
Откуда: Samara
Контактная информация:

Re: Полезные скрипты наструганные на коленке.

Непрочитанное сообщение Grishun_U_S » 2009-02-13 12:09:57

Darwin.ggl писал(а):
Grishun_U_S писал(а):Скрипт пишет вывод ifconfig в файл и выклдывает его на ftp сервер. Я с помощью этого скрипта узнаю выданный шлюзу адрес чтобы приконнектиться к нему по ssh. Будет полезен тем, кто имеет дело с белыми динамическими адресами.

Код: Выделить всё

#!/bin/sh

/sbin/ifconfig > /tmp/newaddress
/usr/bin/ftp -u ftp://USER:PASSW@my.ftpserver.ru/www/newaddress /tmp/newaddress 
Зачем так?!
Вот так лудше)
Запускать из крона, раз в сутки гдето.

Код: Выделить всё

#!/bin/sh
time=`date +%v`
dev="rl0"
echo "<html><head><title>IP</title></head><body><center><font size=7>Дата: ${time} IP: `ifconfig ${dev} | grep inet | awk '{print $2}'`</font></center></body><html>" > /tmp/newaddress
ftp -u ftp://USER:PASSW@my.ftpserver.ru/www/newaddress /tmp/newaddress

И чем же "лудше"?
Все тоже самое епта
и потом, по крону мне абсолютно не вариант, значит даже хуже (=
Изображение