0
스크립트가 있습니다. LAN을 스캔하고 마스터 목록에 나타나지 않는 새 MAC 주소가 있으면 알림을 보내려고합니다. 내 변수가 엉망이 될 수 있다고 생각합니다. 이것은 내가 무엇을 가지고 :Bash 쉘 스크립트가 작동하지 않습니다.
#!/bin/bash
LIST=$HOME/maclist.log
MASTERFILE=$HOME/master
FILEDIFF="$(diff $LIST $MASTERFILE)"
# backup the maclist first
if [ -f $LIST ]; then
cp $LIST maclist_`date +%Y%m%H%M`.log.bk
else
touch $LIST
fi
# this will scan the network and extract the IP and MAC address
nmap -n -sP 192.168.122.0/24 | awk '/^Nmap scan/{IP=$5};/^MAC/{print IP,$3};{next}' > $LIST
# this will use a diff command to compare the maclist created above and master list of known good devices on the LAN
if [ $FILEDIFF ] 2> /dev/null; then
echo
echo "---- All is well on `date` ----" >> macscan.log
echo
else
# echo -e "\nWARNING!!" | `mutt -e 'my_hdr From:[email protected]' -s "WARNIG!! NEW DEVICE ON THE LAN" -i maclist.log [email protected]`
echo "emailing you"
fi
maclist.log 내가이 응답을 얻을 존재하지 않을 때이 실행 : 나는 maclist.log 파일이 기존에 다시 실행하면
diff: /root/maclist.log: No such file or directory
을 파일은 문제없이 cp 줄에서 이름이 변경됩니다.
무엇이 당신의 질문입니까? –
첫 번째 조건 블록 ('if [-f $ LIST] ...') 다음에'FILEDIFF = "$ (diff $ LIST $ MASTERFILE)"'을 실행하면 어떨까요? –
@ThomasWilmotte 그래서 나는 그것을 시도했지만 아무런 오류가 없지만 FILEDIFF 변수는 그 이메일을 받기 때문에 여전히 작동하지 않는다. 또는 if [$ FILEDIFF] 문에 문제가있을 수 있습니다. – t3kg33k