将 CTRL+C (^+C) 作为脚本的一部分自动化?

将 CTRL+C (^+C) 作为脚本的一部分自动化?

我有以下脚本,它启动端口 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 美分!

相关内容