我有以下脚本,它启动端口 80 的 SSH 隧道,安装 PHPmyadmin,然后sleep
出于安全原因在 2 小时(超时)后自动删除它。
我想要自动化的是离开隧道。现在要退出隧道,我应该在 2 小时后执行 CTRL+C,但我不想手动执行。我也希望它是自动的。我可以在以下脚本中添加什么来自动退出隧道?
bash /dev/fd/4 4<< 'EOF0'
#!/bin/bash -x
# 1. Preface:
# Make sure you closed port 3306 for good. !!!!!!!!!
# Start an SSH tunnel:
ssh WORK-USER@SERVER-IP -L 80:localhost:80
# 2. Install commands:
sudo apt-get install phpmyadmin -y
sudo phpenmod mcrypt mbstring
cat << EOF1 >> /etc/apache2/apache2.conf
Include /etc/phpmyadmin/apache.conf
EOF1
sudo service apache2 restart
# 3. Delayed-uninstall commands:
sleep 2h
sudo phpdismod mcrypt mbstring
sudo apt-get purge phpmyadmin -y
sudo service apache2 restart
sed -i 's/Include \/etc\/phpmyadmin\/apache.conf/ /g' /etc/apache2/apache2.conf
# Sed: First forward slash == substitute. Last major three == diff, global, address.
EOF0
我们已经到达了脚本的结尾。假设 2 小时过去了,但我仍然处于隧道模式并离开了计算机;如何确保脚本结束时自动退出隧道模式?
答案1
要终止(挂起)父 shell,您可以简单地kill -SIGHUP $PPID
.
答案2
我会推荐一个 cron 作业来终止进程,用 PID 从脚本中写入条目,以及运行时间 + 2 小时 只需我的 2 美分!