使用crontab自动化SNX重新启动

3

我正在使用SSL Network Extender (SNX)的VPN连接来连接远程服务器。与远程服务器的连接仅限于12小时。之后,连接会被断开,必须重新启动SNX服务器。为了克服这些困难,我正在尝试使用crontab自动重启SNX。

  1. 我创建了一个名为vpn.sh的shell脚本文件。
#!/bin/bash
snx -d
sleep 3
echo 'password' | snx
我有一个配置文件,叫做.snxrc,位于我的主目录下。
server server.com
username username
reauth yes
  1. 在 crontab(crontab -e)配置文件中,我有以下代码:

* */12 * * * bash /home/username/vpn.sh > /home/username/cron.log

它每 12 小时运行一次。但是当 snx -d 成功运行后,达到 echo 'newpass6' | snx 时,我遇到了这个错误:

Failed to init terminal!

有人遇到过这样的问题吗?请帮帮我。我已经苦苦挣扎了一个星期了。提前谢谢。

我按照此链接设置了snx


如果我直接从命令提示符中执行bash脚本,它可以正常工作,但是如果在crontab中执行相同的脚本,则会出现上述问题。 - Tashi Dendup
2
没有理由给我点踩,我也有类似的问题……点个赞。 - Daniel
1
我的另一种选择是使用screen命令,这使我能够将snx作为systemd服务运行。虽然我还必须在snx调用后使用sleep 365d,以便screen不会立即退出。 - Martin Mucha
2个回答

1

因为SNX客户端无法在没有终端的情况下启动。因此,我在我的脚本中放置了这些命令,以在byobu会话中启动SNX。

byobu new-session -d -s vpn;
byobu new-window -t vpn:1 -n "snx" "echo your_password | snx -s your_ip -u your_user; sleep 10"

非常感谢您的帮助。运行得非常好! - Tashi Dendup
命令 echo your_password | snx -s your_ip -u your_user; sleep 10 根本没有被执行。一个空的会话被创建了。 - QkiZ

0

批准的答案对我不起作用。它创建了一个空的tmux会话,没有执行任何命令。所以这是我完成此任务的方法:

byobu-tmux new-session -d "echo <password> | nohup snx -s <host> -u <user>"

只需要一个命令就可以让它工作。需要使用nohup,因为snx进程将进入后台并返回提示符。之后,tmux退出,snx未分配到终端。如果在tmux退出后没有使用nohup,系统将终止snx进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接