我想cronjob我的脚本:
但它实际上不起作用,我不知道为什么。
它通过电子邮件发送WAN2.txt文件,无论它是否相同,也不会覆盖它。
#!/bin/bash
wan1=/home/user/Scripts/wanip.txt
wan2=/home/user/Scripts/wanip2.txt
dig +short myip.opendns.com @resolver1.opendns.com>$wan2
if [ "$wan1" != "$wan2" ]
then
/usr/bin/sendEmail -f showname@example.com -t sendto@example.com -u Wanip -m "hallo" -s smtp.example.com:587 -xu user -xp passwort -a $wan2
elif [ "$wan1" != "$wan2" ]
then
$wan2>$wan1
else exit
fi
答案 0 :(得分:1)
您正在比较变量,而不是文件的内容。
在您的情况下,变量$wan1
永远不会与$wan2
保持相同的值,因此您的脚本将始终向您发送电子邮件。使用cmp
,diff
等来比较文件。
此外,您的if
和elif
具有相同的条件,这意味着当if
被触发时,您的elif
不会。
$wan1 > $wan2
也不正确,因为它会搜索名为/home/user/Scripts/wanip.txt
的程序并将输出重定向到/home/user/Scripts/wanip2.txt
。使用cp
覆盖或更改您的行cat "$wan2" > "$wan1"
。
#!/bin/bash
wan1=/home/user/Scripts/wanip.txt
wan2=/home/user/Scripts/wanip2.txt
dig +short myip.opendns.com @resolver1.opendns.com > "$wan2"
if ! cmp --quiet "$wan1" "$wan2"; then
/usr/bin/sendEmail -f showname@example.com -t sendto@example.com -u Wanip -m "hallo" -s smtp.example.com:587 -xu user -xp passwort -a "$wan2"
cp -f "$wan2" "$wan1"
fi