php - 稍后在 PHP 中启动 bash 脚本

标签 php linux bash apache2 at-job

稍后我试图在 PHP 中启动一个 bash 脚本,所以我在 visudo 中允许它。

www-data ALL = (root) NOPASSWD: /sbin/iptables
www-data ALL = (root) NOPASSWD: /usr/bin/at

脚本 removeuserIP 正在执行 sudo iptables ... 并且正在运行:

#!/bin/bash
sudo iptables -t nat -D PREROUTING -s $1 -j ACCEPT;
sudo iptables -D FORWARD -s $1 -j ACCEPT;

在 PHP 代码中,我放了这一行:

$msg=exec("echo /var/www/scripts/removeuserIP $ipaddress | at now + 1 minutes");

但问题是它现在正在启动脚本。我检查了 /log/var/auth.log,确实,它现在正在启动命令。

我直接在终端上试了一下,没有问题,稍后开始(当然有一个参数):

echo /var/www/scripts/removeuserIP $ipaddress | at now + 1 minutes

我也尝试在终端中这样做,但是这个也不起作用,因为它不理解文件的参数:

sudo at now +1 minutes -f /var/www/scripts/removeuserIP 172.24.1.115

我真的不明白为什么它现在开始,即使它应该在 1 分钟后而不是现在开始。

最佳答案

removeuserIP 脚本中设置时间延迟是否可以接受?

#!/bin/bash
sleep 1m
sudo iptables -t nat -D PREROUTING -s $1 -j ACCEPT;
sudo iptables -D FORWARD -s $1 -j ACCEPT;

关于php - 稍后在 PHP 中启动 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40403165/

相关文章:

php - 为什么 PHP-FPM 在写入标准输出时会添加警告前缀?

linux - 本地 CircleCI 报告 "Unexpected environment preparation error: error looking up self container id: Found multiple cgroups for outer container"

linux - 分离的 HEAD 是我当前的项目文件吗?

json - 将字符串数组从curl转换为文件中的分隔新行

linux - Bash 检查文件是否存在,然后检查文件中的子字符串

php - 如何使用 PHP 循环遍历按十年分组的记录的 MySQL 结果集?

php - MySQL - 在我通过 Workbench 或 CLI 连接之前访问被拒绝

php - 升级 laravel 5.1 - 5.4 时如何修复 'You must set the encryption key going forward to improve the security of this library' 错误

linux - 在 Unix 中自动清理 tmp 目录

git - 不能在 git 中 pop 命名存储