![]() |
Expect: Удаленное выключение компьютера
Надоело каждый раз подключаться по ssh чтобы выключить компьютер. Написал небольшой скрипт:
Код:
#!/usr/bin/expect Подскажите что не так в скрипте. PS: ос Ubuntu Server |
Доброго времени суток. Подозреваю, что топикстартер свою проблему уже решил. Пишу для тех, кто с ней только столкнулся.
Для начала устанавливаем 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", назначение которой для меня осталось тайной, возможно она Вам тоже пригодится. |
Пароли хранятся в файле открытым текстом? Плохо.
|
Цитата:
1. Создать пару ключей (через ssh-agent) 2. СКопировать открытый ключ на удалённый компьютер и прописать в настройках ssh-сервера 3. Подать команду на соединение (ssh username@IP ) 4. Профит |
Время: 13:09. |
Время: 13:09.
© OSzone.net 2001-