Supervisord是一个守护程序,可以将一个前台程序转为后台运行并监视其运行状态,实现自动重启等功能。其配置文件为/etc/supervisord.conf,可以用echo_supervisord_conf命令输出生成配置示例。启动服务用supervisord,控制具体某个程序的运行状态可以用supervisorctl命令。

用ssh可以很方便地建立vpn代理,ssh -C -D local_port -p server_port user@x.x.x.x, -C压缩,-D转发端口,-p服务器端口。但是每次都需要手动输入密码,我们可以用expect来自动输入密码,或者用sshpass。用sshpass执行ssh指令: sshpass -p passwd ssh -C -D ...

用sshpass建立vpn代理方便了很多,但是如果遇到错误ssh程序会自动退出,这时我们就需要用supervisord来运行sshpass了,可以在supervisord.conf加入以下配置:

[program:sshpass]
command=sshpass -p passwd ssh -C -N -D 12345 -p 443 username@x.x.x.x
user=xxxx

command为具体的命令(可带参数),user为执行该命令的user,ssh连接时用的是/home/user/.ssh下的证书所以需要定义user。

还可以将supervisord设置为开启自启动(Archlinux):

$systemctl enable supervisord.service
comments powered by Disqus