我已经在远程服务器上部署了一个expect脚本,我想通过ssh运行它。
ssh user@host 'expect -d ./netopeer_expect.sh' (1)
user@host:~$ cat netopeer_expect.sh
#!/usr/bin/expect
set timeout 5
#spawn netopeer2-cli
spawn ./np2_multi_cli
expect ">"
send "listen --timeout 120\r"
expect "ru_id 0"
send "get-config -D=0 --source running --out /home/user/out.xml\r"
expect ">"
send "exit\r"
expect "$"
这段代码运行的是一个修改后的netopeer2-cli版本,我们称之为./np2_multi_cli。该netopeer2-cli具有自己的shell和类似于>的提示符。当我分为两步进行时,它能正常工作。
ssh user@host
expect -d ./netopeer_expect.sh (2)
然而,这个消息
send "get-config -D=0 --source running --out /home/user/out.xml\r"
被切割并发送为,
send "-D=0 --source running --out /home/user/out.xml\r"
通过带有-d参数的运行(1),我看到了这个:
预期结果:“\u001b[6n”(spawn_id exp3)是否与通配符“>”匹配?不
当我尝试匹配第一个 > 时。当我改为运行(2)时,它看起来正常,
预期结果:"> " (spawn_id exp4) 是否与通配符 ">" 匹配?是
我运行bash时,似乎存在一些关于 > 字符的编码问题。有任何想法如何处理这个问题吗?
敬礼 Patrik
user@host:~$ file -bi netopeer_expect.sh text/plain; charset=us-ascii
- patrik