Bash 文件未正确完成
Bash file not completing correctly
我编写了以下 bash 脚本,该脚本旨在在服务器上的 UFW 规则发生更改时创建一个文件。然后将使用 Zabbix 检查此文件是否存在。
#!/bin/bash
file="/tmp/ports.txt"
file_open="/tmp/open_ports.txt"
md5_file=$(md5sum /tmp/ports.txt | awk '{ print }')
md5_file_open=$(md5sum /tmp/open_ports.txt | awk '{ print }')
file_diff="/tmp/ports_diff"
if [[ ! -f $file ]]; then
touch $file && sudo ufw status|grep ALLOW > $file
fi
if [ -f $file_diff ];then
rm $file_diff
fi
sudo ufw status|grep ALLOW > $file_open
if [ $md5_file != $md5_file_open ];then
touch $file_diff
fi
我发现有时文件没有在应该创建或删除的时候创建或删除,但是如果我第二次或第三次 运行 命令没有做任何进一步的更改,它就会创建或删除。
请帮忙。
谢谢
第一次调用时,文件“/tmp/ports.txt”和“/tmp/open_ports.txt”不存在。在第一个 运行 之后,两个文件都应该被创建并且 diff 是空的。
在此之后,ufw status
发生了变化。
在接下来的运行中,语句
md5_file=$(md5sum /tmp/ports.txt | awk '{ print }')
md5_file_open=$(md5sum /tmp/open_ports.txt | awk '{ print }')
将处理原始文件(没有更改状态),因此它们将对相同的文件进行操作。不会发现差异。
在此期间 运行 $file_open
将填充新值,但此更改后不会调用 md5sum
函数。将不会进行差异化。
下一个运行从改变后的$file_open
开始,找到不同之处。
当status改回原来的值时,先运行旧文件的md5,想看看有什么区别,并没有删除diff文件。此 运行 还将使用新值写入 $file_open
,将在下一个 运行.
中检测到
解决方法:
将 2 md5sum 行移动到最后一个 sudo
之后。
我编写了以下 bash 脚本,该脚本旨在在服务器上的 UFW 规则发生更改时创建一个文件。然后将使用 Zabbix 检查此文件是否存在。
#!/bin/bash
file="/tmp/ports.txt"
file_open="/tmp/open_ports.txt"
md5_file=$(md5sum /tmp/ports.txt | awk '{ print }')
md5_file_open=$(md5sum /tmp/open_ports.txt | awk '{ print }')
file_diff="/tmp/ports_diff"
if [[ ! -f $file ]]; then
touch $file && sudo ufw status|grep ALLOW > $file
fi
if [ -f $file_diff ];then
rm $file_diff
fi
sudo ufw status|grep ALLOW > $file_open
if [ $md5_file != $md5_file_open ];then
touch $file_diff
fi
我发现有时文件没有在应该创建或删除的时候创建或删除,但是如果我第二次或第三次 运行 命令没有做任何进一步的更改,它就会创建或删除。
请帮忙。
谢谢
第一次调用时,文件“/tmp/ports.txt”和“/tmp/open_ports.txt”不存在。在第一个 运行 之后,两个文件都应该被创建并且 diff 是空的。
在此之后,ufw status
发生了变化。
在接下来的运行中,语句
md5_file=$(md5sum /tmp/ports.txt | awk '{ print }')
md5_file_open=$(md5sum /tmp/open_ports.txt | awk '{ print }')
将处理原始文件(没有更改状态),因此它们将对相同的文件进行操作。不会发现差异。
在此期间 运行 $file_open
将填充新值,但此更改后不会调用 md5sum
函数。将不会进行差异化。
下一个运行从改变后的$file_open
开始,找到不同之处。
当status改回原来的值时,先运行旧文件的md5,想看看有什么区别,并没有删除diff文件。此 运行 还将使用新值写入 $file_open
,将在下一个 运行.
解决方法:
将 2 md5sum 行移动到最后一个 sudo
之后。