De moment m'he fet aquest Script que ja m'apaga una sóla màquina, ara hem cal fer que agafi tot el rang des de 192.168.0.180 fins a 192.168.0.192...
#!/usr/bin/expect -f
# Autor: Manel Sales msales24 llicència:GPLv3 http://www.gnu.org/licenses/gpl-3.0-standalone.html
# Script per apagar via SSH les màquines, Octubre 2012
#
# cal tenir instal·lat el paquet "expect" sinó fem un>> zypper in expect
# ens avisa que apagarà i continua
send "Apagant els clients..."
#
# rang de la ip per exemple la IP 192.168.0.189
set ip "192.168.0.189"
# definim el client
# usuari nom de l'usuari administrador
set usuari "nom"
# contrasenya de l'administrador, per exemple 1234
set password "1234"
# crida al client
spawn ssh $usuari@$ip
#
# si no hem accedit mai ens preguntarà si volem continuar i espera la pregunta de la contrasenya i respon
expect {
"Are you sure you want to continue connecting (yes/no)?" {
send -- "yes\r"}
"Password:" {
send -- "${password}\r"}
}
# permet interactuar
# interact
# ---- fins aquí podríem connectar-nos sense haver d'apagar, només cal comentar tot el que segueix ----
# ara espera entrar al root, espera el símbol de sistema # i...
expect "# "
# mana l'ordre d'apagar
send -- "halt\r"
# i ara sortim de la màquina i script
expect "# "
send -- "exit\r"
#### ---- fins aquí comentaria si només vull connectar-me i no apagar
expect eof
Ara ho tinc desat com a apagar.exp i amb permisos d'execució poso a la terminal:
o tambér podem executar com:
i apaga la màquina.
Una altra opció és canviar les línies:
# rang de la ip per exemple la IP 192.168.0.189
set ip "192.168.0.189"
per
# si volem cridar la ip des de la comanda activem la següent ordre i executem ./apagar.exp 192.168.0.194 a la terminal
set ip [lindex $argv 0]
i ho executem com:
./apagar.exp 192.168.0.194
Així podem indicar la IP de la màquina que volem apagar en cada cas.
Si algú el vol millorar, perfecte!!!
Manel Sales
Editat per msales24 el 26/Oct/2012 - 14:16.