
ファイル(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/