我知道与此相关的风险,但我仍然想这样做。
我试图遵循其他答案,但没有成功。
基本上我只想在启动时打开ssh隧道。所以我正在创建一个脚本,我可以将其作为 cron作业进行系统启动。
到目前为止,脚本看起来像这样:
#!/usr/bin/expect -f
spawn java -jar client.jar </dev/null &>/dev/null &
spawn ssh -fN -i /home/my_user/.ssh/id_rsa -R 20001:localhost:22 other_user@other_host
expect "*passphrase*"
send "my passphrase\r"
我得到的结果是,java进程都没有继续运行(如果它甚至根本没有启动),并且SSH连接都没有保持活动状态(如果它甚至连启动,并且密码被正确插入, send
命令。)
我在这里做错了什么?
谢谢!
答案 0 :(得分:1)
对于 spawn java :Expect spawn
无法理解<
,&>
和&
。您可以使用Tcl的exec
命令,因为您没有与Java命令交互。
exec java -jar client.jar < /dev/null >& /dev/null &
对于 spawn ssh :正如Dinesh指出的那样,您必须添加expect eof
或者它不等待ssh
退出的过程。
答案 1 :(得分:-1)
最好尝试 autoexpect
,这应该有用。
使用
sudo yum install expect
或 sudo apt-get install expect
安装完成后。输入命令autoexpect
。
它会显示如下信息:
Autoexpect started, file is script.exp
在此之后,只需手动执行活动,然后为您编写脚本。