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
我使用以下 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