私はLinuxとbashの世界の相対的な「初心者」であり、これを理解することはできません。
これに加えて、"string"が存在しない場合は、iptablesを修正したいのですが、うまくいかないようです。 ifステートメント、終了コード、構文、sudo権限などが原因であるかどうかはわかりません。
cronを介してスクリプトが自動的に実行されると、探している文字列が含まれていてもif
そのiptables
句が実行されます。これは検証されました
- 端末でスケジュールされた実行前後の秒を印刷します。
echo "this" >>/log/file.log
if句に1つを追加します。
1番を選択してください:
#!/bin/bash
iptables -L -n -v | grep 8.8.8.8
if [ $? != 0 ]; then
command-to-perform
fi
2番:
#!/bin/bash
iptablesvar=$(iptables -L -v -n)
if [[ $iptablesvar != *"8.8.8.8"* ]]; then
command-to-perform
fi
次の行を使用して、(sudo)crontabによってトリガされる両方の方法を試しました。
*/1 * * * * /bin/bash /home/username/path/to/script-file.sh
私を混乱させるのは、次のように端末に直接入力したときに上記の両方のオプションが機能するようです。
sudo iptables -L -n -v | grep 8.8.8.8
if [ $? != 0 ]; then echo "not found" ;fi
if [ $? == 0 ]; then echo "found" ;fi
var=$(sudo iptables -L -n -v)
if [[ $var != *"8.8.8.8"* ]]; then echo "n" ;fi
if [[ $var == *"8.8.8.8"* ]]; then echo "y" ;fi
何を提供しますか?
該当する場合、私のシステムは新しいLinux Mint 19.3 Triciaです。