Искусство программирования на языке сценариев командной оболочки
Шрифт:
cu
Call Up -- выполняет соединение с удаленной системой, как простой терминал. Эта команда является частью пакета uucp и, своего рода, упрощенным вариантом команды telnet.
telnet
Утилита и протокол для подключения к удаленной системе.
wget
wget– - неинтерактивная
wget -p http://www.xyz23.com/file01.html
wget -r ftp://ftp.xyz24.net/~bozo/project_files/ -o $SAVEFILE
lynx
lynx– - Web браузер, внутри сценариев (с ключом – dump) может использоваться для скачивания файлов с Web или ftp сайтов, в неинтерактивном режиме.
lynx -dump>$SAVEFILE
rlogin
Remote login– - инициирует сессию с удаленной системой. Эта команда небезопасна, вместо нее лучше использовать ssh.
rsh
Remote shell– - исполняет команду на удаленной системе. Эта команда небезопасна, вместо нее лучше использовать ssh.
rcp
Remote copy– - копирование файлов между двумя машинами через сеть. Подобно прочим r* утилитам, команда rcp небезопасна и потому, использовать ее в сценариях нежелательно. В качестве замены можно порекомендовать ssh или expect.
ssh
Secure shell– - устанавливает сеанс связи и выполняет команды на удаленной системе. Выступает в качестве защищенной замены для telnet, rlogin, rcp и rsh. Использует идентификацию, аутентификацию и шифрование информации, передаваемой через сеть. Подробности вы найдете в man ssh.
Локальная сеть
write
Эта утилита позволяет передать текст сообщения на другой терминал (console или xterm). Разрешить или запретить доступ к терминалу можно с помощью команды mesg.
Поскольку команда write работает в интерактивном режиме, то, как правило, она не употребляется в сценариях.
Чтение или передача электронной почты.
Этот почтовый клиент командной строки с успехом может использоваться в сценариях.
Пример 12-31. Сценарий, отправляющий себя самого по электронной почте
#!/bin/sh
# self-mailer.sh: Сценарий отправляет себя самого по электронной почте
adr=${1:-`whoami`} # Если пользователь не указан, то -- себе самому.
# Вызов 'self-mailer.sh wiseguy@superdupergenius.com'
#+ приведет к передаче электронного письма по указанному адресу.
# Вызов 'self-mailer.sh' (без аргументов) -- отправит письмо
#+ пользователю, запустившему сценарий, например, bozo@localhost.localdomain.
#
# Дополнительно о конструкции ${parameter:-default},
#+ см. раздел "Подстановка параметров"
#+ в главе "К вопросу о переменных".
# ============================================================================
cat $0 | mail -s "Сценарий \"`basename $0`\" отправил себя сам." "$adr"
# ============================================================================
# --------------------------------------------
# Поздравляю!
# Этот сценарий запустила какая-то "редиска",
#+ и заставила отправить этот текст к Вам.
# Очевидно кто-то не знает
#+ куда девать свое время.
# --------------------------------------------
echo "`date`, сценарий \"`basename $0`\" отправлен "$adr"."
exit 0
mailto
Команда mailto, похожа на mail, она также отправляет сообщения по электронной почте. Однако, кроме этого, mailto позволяет отправлять MIME (multimedia) сообщения.
vacation
Эта утилита предназначена для автоматической передачи ответов на электронные письма, например для того, чтобы уведомить отправителя о том, что получатель временно отсутствует. Работает совместно с sendmail и не может использоваться для передачи сообщений через коммутируемые линии (по модему).
12.7. Команды управления терминалом
Команды, имеющие отношение к консоли или терминалу
tput
инициализация терминала или выполнение запроса к базе данных терминалов terminfo. С помощью tput можно выполнять различные операции. tput clear– - эквивалентно команде clear. tput reset– - эквивалентно команде reset. tput sgr0– - так же сбрасывет настройки терминал, но без очистки экрана.
bash$ tput longname
xterm terminal emulator (XFree86 4.0 Window System)
Команда tput cup X Y перемещает курсор в координаты (X,Y). Обычно этой команде предшествует clear, очищающая экран.
Обратите внимание: stty предлагает более широкий диапазон возможностей.
infocmp
Cравнение или печать информации о характеристиках терминалов, хранящейся в базе данных terminfo.