linux期望在后台

时间:2019-07-05 19:51:24

标签: bash expect systemd pbx

我使用以下bash脚本通过telnet连接到pbx:

expect.sh:

#!/usr/bin/expect 
    spawn telnet [ip] 2300
    expect -exact "-"
    send "SMDR\r";
    expect "Enter Password:"
    send "PASSWORD\r";
    interact

并创建另一个脚本以将结果重定向到文件:

#!/bin/bash
    ./expect.sh | tee pbx.log

我试图在引导时运行Expect.sh,因此将其添加到systemd中。当我将其作为服务添加到/etc/systemd/system中时,它会运行,但无法在日志文件中获取结果,就像我手动运行两个脚本一样 关于如何在启动时运行它的任何想法? TIA

1 个答案:

答案 0 :(得分:1)

如果您只想永久输出提供密码后收到的所有内容,只需将interactive替换为expect eof,即等待文件结束(当另一个被对方关闭时会发生)结束。您可能还想更改默认超时时间10秒,而没有任何数据会停止命令:

set timeout -1 
expect eof