繁体   English   中英

ssh登录后预期脚本未执行

[英]Expect script not executing after ssh login

我正在尝试将Expect脚本编写为:

  1. 连接到提供用户名和密码的远程服务器
  2. 遍历本地文件读取每一行
  3. 在远程服务器上为每行执行一个特定的命令

我可以成功完成第1步,并在一个简单的场景中测试了第3步,但还不能使它工作。 不幸的是,在脚本的第8行中,发送密码后,我只是登录到服务器,就像手动登录(我可以与控制台进行交互)一样,其余的未执行。

我该如何解决这个问题?

这是脚本:

#!/usr/bin/expect
set timeout 20
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh -t -t "$user\@$ip"
expect "Password:"
send "$password\r";
expect "NYXOOBPN402(config)$"
send "delete decoders:ASX-Trade24-FIX.mdp\r"
expect "Are you sure you want to delete 'decoders:ASX-Trade24-FIX.mdp' (y/n)?"
send "y\r";

这就是我执行它的方式:

./test_expect.sh 172.18.250.20 admin admin

问题是我的期望在第17行中是不正确的,我应该只放置“ *(config)*”,而不是“ NYXOOBPN402(config)$”,因为在此部分之前有很多文本不匹配。

这是我遇到相同问题的人的最终脚本:

#!/usr/bin/expect
set timeout 9
# Check if the parameters are correct
if {[llength $argv] == 0} {
      send_user "Usage: ./test_expect.sh ip username password\n"
        exit 1
    }

# Read the file with all the decoders names to be deleted
set f [open "decoders.txt"]
set decoders [split [read $f] "\n"]
close $f

# debug mode - very useful:
#exp_internal 1

# Connect to the server
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh -t "$user\@$ip"
expect "Password: "
send "$password\r";
sleep 3
# send ctrl+c since this terminal shows a lot of decoders
#send \x03

expect {
    default { send_user "\nCould not find the expected value.\n"; exit 1 }
    "*(config)*" {
        # Loop through all the decoders
        foreach decoder $decoders {
            #send_user "Removing $decoder\n"
            send "delete decoders:$decoder\r"
            expect {
                "Are you sure you want to delete*" { send "y\r" }
                "*decoder will still be active*" { send_user "\nRemoved $decoder successfully\n" }
                "*no such file or directory" { send_user "\nDecoder $decoder already deleted.\n" }
                default { send_user "\nNot expected value with $decoder, please debug.\n"; exit 1 }
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM