如何在 bash 中的 ssh expect 脚本中自动执行 ctrl+d 操作?
How to automate ctrl+d action in the ssh expect script in bash?
我有一个用例,我需要在通过 ssh 连接到主机后执行命令。命令执行后,我需要执行Ctrl-D和Ctrl-M,这样我才能发出其他命令。
我尝试使用 EOF,但它完全关闭了会话。
expect << EOF
spawn ssh -o StrictHostKeyChecking=no LocalCOMUser@$nodeIp -p $ssh_port
expect {
"password:" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "p@ssword\r"
expect {
">" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
set timeout 120
send "mml\r"
expect {
"<" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "$command1\r"
expect {
"<" {}
}
send "exit;\r"
expect {
">" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "exit\r"
EOF
需要一个像 Ctrl-d 一样执行操作的命令。
您可以通过发送 ^D/␄ 字符来模拟按下 Ctrl-D:
send "\x04"
我有一个用例,我需要在通过 ssh 连接到主机后执行命令。命令执行后,我需要执行Ctrl-D和Ctrl-M,这样我才能发出其他命令。
我尝试使用 EOF,但它完全关闭了会话。
expect << EOF
spawn ssh -o StrictHostKeyChecking=no LocalCOMUser@$nodeIp -p $ssh_port
expect {
"password:" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "p@ssword\r"
expect {
">" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
set timeout 120
send "mml\r"
expect {
"<" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "$command1\r"
expect {
"<" {}
}
send "exit;\r"
expect {
">" {}
timeout { send_user "Timed out in ssh connection" ;exit 1}
}
send "exit\r"
EOF
需要一个像 Ctrl-d 一样执行操作的命令。
您可以通过发送 ^D/␄ 字符来模拟按下 Ctrl-D:
send "\x04"