ssh на сервер и автоматически выполнить команду sudo и оставить оболочку открытой

while IFS= read -r line
do
    array[${#array[*]}]="$line"
done <file
-1
07.02.2018, 01:11
1 ответ

Por lo general, esto se puede hacer con expect. Puede hacer que recupere la contraseña del entorno, pásela a base64y recupere la salida. Luego genere el ssh, espere el indicador $del shell y envíele el comando sudo. Cuando se vea la solicitud de contraseña de sudo, envíe la contraseña decodificada, luego continúe dentro de lo esperado de la manera habitual con interact. Coloque lo siguiente en un archivo y hágalo ejecutable, luego llámelo con su nombre de host como argumento.

#!/usr/bin/expect -f
# https://unix.stackexchange.com/a/422651/119298
log_user 0
spawn base64 -d
send $env(mypword)\n\x04
expect -nobrace -re "\n(.+)$"
close
set output $expect_out(1,string)

spawn ssh -q -t [lindex $argv 0] 
expect {$ }
send "sudo echo hi\n"
expect -nobrace -re {.sudo. password.*:}
send "$output\n"
expect "\n"
interact
0
28.01.2020, 05:12

Теги

Похожие вопросы