PermLUG |
Пермская группа пользователей Linux |
|
|
|
||
Вход в систему |
Пара полезных мелочей на баше
CORPSE, 12.11.2009 — 18:16
Поделюсь парочкой небольших рюшечек и оборочек, написанных мной на досуге. :) Например, выдёргивание случайной цитаты bash.org.ru: #!/bin/bash wget --timeout=5 --connect-timeout=5 -q -O - <a href="http://wapbash.org.ru/rnd.html" title="http://wapbash.org.ru/rnd.html">http://wapbash.org.ru/rnd.html</a> | sed '/(за сегодня)/,/(TOP-100)/!d;s/<p>/\n/g' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba;1,2d;s/"/"/g;s/</\</g;s/>/\>/g' | sed -n '/^Еще случайная цитата$/,$!p' Выдёргивание погоды для Перми на несколько дней: #!/bin/bash wget -q -O - <a href="http://www.nepogoda.ru/russia/perm/rss.xml" title="http://www.nepogoda.ru/russia/perm/rss.xml">http://www.nepogoda.ru/russia/perm/rss.xml</a> | iconv -f CP1251 -t UTF-8 | grep -E '(|)' | tail -n 24 | cut -d ">" -f 2- | cut -d "<" -f 1 | sed 's/Пермь: /\n/g' | grep -v -E '(NEPOGODA|прогноз)' Использовать по вкусу. Например, можно поставить в .bashrc или conky. Определение корректности ввода IP адреса, MAC адреса и Е-mail адреса и их разпознавание. На выходе получаем строку «ip», «mac», «mail» или «unknown». Полезно для написания своих скриптов, можно сделать введение параметров в произвольном порядке, а скрипт сам будет распознавать, что из них является mac адресом, а что ip например.
#!/bin/bash
type="unknown"
if [ -n "$1" ]; then
if [ -n "$( echo "$1" | grep -E '^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$' )" ]; then
type="mac"
fi
if [ -n "$( echo "$1" | grep -E '(^[1-9].|^[1-9][0-9].|^1[0-9][0-9].|^2[0-4][0-9].|^25[0-5].)([0-9].|[1-9][0-9].|1[0-9][0-9].|2[0-4][0-9].|25[0-5].){2}([0-9]$|[1-9][0-9]$|1[0-9][0-9]$|2[0-4][0-9]$|25[0-5]$)' ]; then
type="ip"
fi
if [ -n "$( echo "$1" | grep -E '^[a-zA-Z]([a-zA-Z_-\.]*)[a-zA-Z]@[a-zA-Z]([a-zA-Z_-\.]*)[a-zA-Z]\.[a-zA-Z]{2,4}$' )" ]; then
type="mail"
fi
echo "$type"
fi
Скрипт для выполнения комманд на удалённых коммутаторах D-Link и Allied Telesys (распознаёт автоматически по типу приглашения).
#!/usr/bin/expect -f
set remote_server [lindex $argv 0]
set my_command [lindex $argv 1]
spawn telnet $remote_server
set fail 0
expect {
-timeout 5
"DES" { set model "dlink" }
"Connected to" { set model "at" }
timeout { set fail 1 }
}
if ($fail) {
exit 2
}
expect "User*Name:"
send "adm\r"
expect "Pass*ord:"
send "PASS_HERE\r"
expect "#"
send "$my_command\r"
for {} 1 {} {
expect {
-timeout 5
"*Next Page*" { send "n" }
"More:*space*" { send " " }
"#" exit 0
}
}
expect #
|
Тэги в ТегиНовые записи в блогах
Активные обсуждения форума
Новости Linux
|
| Пермская группа пользователей Linux, 2003—2011 | ||
Была такая тема, будь внимательнее: http://www.permlug.org/node/4950. Лучше бы ту коментарии добавлял