Показать полную графическую версию : Expect: Удаленное выключение компьютера
Надоело каждый раз подключаться по ssh чтобы выключить компьютер. Написал небольшой скрипт:
#!/usr/bin/expect
set timeout 30
spawn ssh -p 443 192.168.1.10
expect "user@mycomp" { send "sudo su\r" }
expect {
"password for*:" { send "mypassword\r" }
"root@*#" { send "halt\r" }
}
expect {
"root@*#" { send "halt\r" }
}
Но почему то он срабатывает только со второго раза. В первый запуск он только логинется под рутом, а во второй выключает.
Подскажите что не так в скрипте.
PS: ос Ubuntu Server
elvin_sochi
06-03-2011, 17:26
Доброго времени суток. Подозреваю, что топикстартер свою проблему уже решил. Пишу для тех, кто с ней только столкнулся.
Для начала устанавливаем expect:
sudo apt-get install
После, создаём файл, который у нас станет скриптом выключения сервака. У меня его содержимое выглядит так:
#!/usr/bin/expect -f #Строка идентификации
spawn ssh -p Порт IP-Адрес #Запуск подпроцесса соединения с сервером через ssh
expect -re"password:" #Ожидание ответа, содержащего в тексте - password:
send "пароль\r" #Дождавшись, отослать пароль
expect -re "\\$ $" #Ждём строку, содержащую $(на него заканчивается приглашение системы)
send "sudo su\r" #Отсылаем команду sudo su для перехода в режим суперпользователя
expect -re "password for пользователь:" #Ждём запрос пароля
send "пароль\r" #Подтверждаем права паролем
expect -re "# $" #Ждём строку, содержащую $
send "poweroff\r" #Тушим сервер
expect -re "power off NOW!" #Удостоверяемся, что машина ушла на выключение
exit 0 #Собственно, удаляемся сами
У топикстартера присутствует строка "set timeout 30", назначение которой для меня осталось тайной, возможно она Вам тоже пригодится.
Пароли хранятся в файле открытым текстом? Плохо.
El Scorpio
11-03-2011, 02:45
Пароли хранятся в файле открытым текстом? Плохо. »
Лучше использовать авторизацию по личному ключу.
1. Создать пару ключей (через ssh-agent)
2. СКопировать открытый ключ на удалённый компьютер и прописать в настройках ssh-сервера
3. Подать команду на соединение (ssh username@IP )
4. Профит
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC