将变量传递给spawn

将变量传递给spawn

我想将文件(servers_list)中列出的服务器名称作为变量传递给另一个脚本(user_create_script)中的生成命令。该脚本的目的是在多个服务器中创建用户(david)。

#cat servers_list
server1
server2
server3


#cat user_create_script
    spawn ssh -t user@$i sudo /usr/sbin/useradd david
    expect "password:"
    send "pass123\r"
    interact

答案1

你会有像这样的 user_create_script

#!/usr/bin/expect -f
set fh [open servers_list r]
while {[gets $fh server_name] != -1} {
    spawn ssh -t user@$server_name sudo /usr/sbin/useradd david
    expect "password:"
    send "pass123\r"
    expect eof
}
close $fh

我假设您的远程用户不需要 sudo 密码。

有关 Tcl 的更多文档(expect 是在此基础上构建的),包括教程,请参见:https://tcl.tk/doc/

相关内容