Про expect

Jan 19, 2011 18:56


Добрый вечер, милостивые господа.

Во второй пятиминутке я хочу рассказать вам о такой замечательной утилите, как expect. Если вы не знаете, что это такое, то будьте уверены - до этого момента ваша жизнь была бессмысленной и полной страданий - даже если вы этого не замечали.

Для чего она? Все просто - с помощью expect вы можете автоматически выполнять интерактивные программы. Вот, например, прямо в данный момент expect, запущенный на моем компьютере, шарится по более чем 60 серверам, настраивая там zabbix-агента, причем мне не надо самому вводить один пароль, чтобы залогиниться на сервер по ssh и другой пароль, чтобы залогиниться от рута - expect сам запускает ssh с нужными параметрами, вводит все пароли, выполняет небольшой скриптик на sed и перезапускает заббикс.

В общем, незачем тянуть, я лучше сразу покажу вам скрипт для expect, который все это делает:

#!/usr/bin/expect -f

set host [lrange $argv 0 0]
set password [lrange $argv 1 1]

spawn ssh $host
expect ".*\$"
send "su - miga-root\r"
expect "?assword:*"
send -- "$password\r"
send "sed -i 's/10.138.0.2/10.137.0.2/g' /etc/zabbix/zabbix_agentd.conf\r"
send "/etc/init.d/zabbix-agent restart\r"
send "exit\r"
send "exit\r"
expect eof

Как видите, все несложно и достаточно очевидно. Скрипт логинится по ssh к хосту, указанному ему первым параметром (так как на всех этих хостах прописан public-key моей машины, мне не надо вводить пароль здесь), потом заходит от пользователя miga-root с паролем, который он достает из второго параметра - и дальше просто заменяет IP-адрес сервера zabbix в настройках агента и перезапускает его. Роботы победят!

обосраться, Роботы победят, пятиминутка

Previous post Next post
Up