Пара полезных мелочей на баше

CORPSE аватар

Поделюсь парочкой небольших рюшечек и оборочек, написанных мной на досуге. :)

Например, выдёргивание случайной цитаты 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/&quot;/"/g;s/&lt;/\</g;s/&gt;/\>/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 (распознаёт автоматически по типу приглашения).
Использование: ./scriptname IP_of_commutator «command here»
Пример: ./comm 192.168.1.10 «sh vla»

#!/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 #

Grifon аватар

Была такая тема, будь внимательнее: http://www.permlug.org/node/4950. Лучше бы ту коментарии добавлял

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".