我是一个狂热的 torrenter,由于我白天大部分时间都很忙,所以晚上运行 Transmission-GTK 是我最好的选择。但是,我的大学服务器喜欢在延长时间限制或 wifi 下载限制后将用户踢出。我需要在睡觉时实现自动化。
使用 Java-GTK 和 Bash,创建了一个应用程序,它会弹出一个窗口询问要使用哪个 VPN。它将输出存储在一个变量中并连接它。然后,如果连接成功,它就会启动传输。
现在,我设置了一个脚本,每小时 ping 8.8.8.8,如果失败,它会 ping 我的学校网络。如果失败,传输就会终止,然后它会使用重新启动网络sudo service network-manager restart
。然后重新连接 VPN,最后重新启动传输。(我知道我可以使用stop
/start
但我选择不这样做)。使用时,我捂住了脸,意识到 sudo 需要我作为管理员的密码。
我研究这个问题已经将近一个星期了,想找一些方法给脚本 root 权限,我看到了数百条警告和“sudo 才是办法”的评论。我查看了 sudoers 文件,尝试了一下,但还是不行(对于最基本的配置,它仍然提示输入密码)。我还研究过创建一个 C 二进制文件,告诉脚本以 0 uid 运行,将该 C 二进制文件设置为 chmod 和 chown root 权限。但都无济于事。(我没有尝试过守护进程,因为我对 C 知之甚少。)(主要是 Bash,还有一点 Java)。
也许是 /etc/network 文件夹中的脚本/配置?我不介意在我原来的脚本框架之外工作的答案,因为安全预防措施可以防止脚本被扎根。
附言:我不是在寻找以警告作为答案,而是在寻找带有警告的答案。
答案1
sudo 就是方法
您是否考虑过在 sudo 下运行脚本本身?
sudo sh .\myScript
如果将脚本添加到用户级别(rc 内容),我认为它也可以以 root 权限运行。