期望不会在屏幕上执行脚本

问题描述 投票:0回答:1

我正在尝试使用screenexpectssh中执行脚本,但从未执行过。我知道这一点是因为我没有看到与screen进行的screen -list会话。Expects的退出代码为0。如果我通过SSH手动执行命令,则该命令有效。

我在做什么错? (也欢迎实现我的目标的其他方式)。

脚本:

#! /bin/bash
expect -d <<-EOF
    set timeout -1
    spawn ssh ${user}@${host}
    expect {
        "yes/no" { send "yes\r"; exp_continue }
        "password: " { send "${pass}\r" }
    }
    expect "*# "
    send "screen -dm bash -c './${CLIENT_SCRIPT_LOG}'\r"
    exit 0
EOF
exit $?

调试输出:

[.. cut ..]
expect: set expect_out(buffer) "\r\nLinux client 4.9.76-Rxx-rt61-gb7ccafd-dirty #1 SMP PREEMPT RT Wed Apr 1 13:14:00 CEST 2020 armv7l\r\n\r\nThe programs included with the Debian GLinux system are free software;\r\nthe exact distribution terms for each program are described in the\r\nindividual files in /usr/share/doc/*/copyright.\r\n\r\nDebian GNU/Linux cs with ABSOLUTELY NO WARRANTY, to the extent\r\npermitted by applicable law.\r\nLast login: Thu Jan  1 05:29:03 1970 from 192.168.138.2\r\r\nroot@client:~# "
send: sending "screen -dm bash -c './log.sh'\r" to { exp5 }

版本客户端:-Debian Wheezy-重击4.2.37-屏幕4.01.00 [开发]

版本主持人:-Debian拉伸-Bash 4.4.12(1)-发布-屏幕版本4.05.0-预期5.45

bash ssh expect gnu-screen
1个回答
0
投票

好吧,看来我必须等到命令执行后才能退出终端。我认为期望太快了。

send "screen -dm bash -c './${CLIENT_SCRIPT_LOG}'\r"
expect "*# " { send "exit\r" }
exit 0
© www.soinside.com 2019 - 2024. All rights reserved.