linux 期待在后台

linux expect in background

我使用以下 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 中时,它 运行s 但我无法在日志文件中获取结果,就好像我手动 运行 两个脚本一样 关于如何在启动时 运行 它有什么想法吗? TIA

如果您只想永久输出在提供密码后收到的所有内容,只需将您的 interactive 替换为 expect eof,即等待 end-of 文件,这将在连接时发生被另一端关闭。您可能还想更改默认超时 10 秒,没有数据会停止命令:

set timeout -1 
expect eof