Można uznać, że adresy IP są z danego(dużego) przedziału. Wtedy pingujesz każdy ip z tego przedziału, i jeżeli ping zwróci 0, to komputer istnieje, a jeżeli zwróci coś innego, to wykonujesz kolejną iterację.
takie pytanie na szybko, czy mogę w if jako warunek dać wykonanie polecenia? Ewentualnie jakiś errorlog czy coś podobnego?
if <find . -iname "*.mojplik" -ctime 0> ; then
echo "Jest ok"
fi
Z adresami IP już sobie poradziłem. Komputery mają stałe adresy IP ale z różnych przedziałów. Sprawę załatwiła pętla for jak sugerował @pocolog - thx
for ip in 10.0.10.1 10.2.20.10 10.0.10.230 itd...; do
#montowanie zasobu
mount -t cifs -o username="user",password="password" //$ip/c$ /mnt/mont
...
...
...
umount /mnt/mont
done
#!/bin/bash
# Tworzenie pliku z informacjami
echo "Sprawdzanie pliku z dnia :" > index.txt
date >> index.txt
echo "---------------------------------------------" >> index.txt
# Petla podstawiajaca adres IP
for ip in 10.0.10.1 10.2.20.10 192.168.1.10 ; do
# Montowanie zasobu"
mount -t cifs -o username="user",password="password" //$ip/c$ /mnt/montownik
cd /mnt/montownik/mojkat/
#Zapis do pliku log gdzie sprawdzamy
echo " Sprawdzam kompa $ip" >> index.txt
#Szukanie pliku
if find . -iname "*.mojplik" -ctime 0; then
echo "OK plik istnieje" >> index.txt
else "NOK brak pliku <----- NOK " >> index.txt
fi
cd /
umount /mnt/montownik
done
Wszystko przed pętlą idzie do pliku, to co w pętli już nie.
Nie bawiłem się nigdy na tyle bashem, ale wygląda na problem z warunkiem if. Może to Cię nakieruje nim znajdzie się ktoś kto lepiej to rozgryzie http://dief.republika.pl/if.html
#!/bin/bash
# Tworzenie pliku z informacjami
printf "Sprawdzanie plików :\n" > /home/user/zdalny/log.txt
date >> /home/user/zdalny/log.txt
printf " _______________________________________ \n" >> /home/user/zdalny/log.txt
# Petla podstawiajaca adres IP
for ip in 192.168.0.100 192.168.0.101 192.168.0.102 192.168.0.103 192.168.20.101 192.168.20.102 192.168.20.103 itd.... ; do
#Zapis do pliku log gdzie sprawdzamy
printf "Sprawdzam $ip\n" >> /home/user/zdalny/log.txt
# Montowanie zasobu i przejscie do folderu "
mount -t cifs -o username="user",password="pass" //$ip/c$ /mnt/montownik
sleep 2
cd /mnt/montownik/mojkat/
#Szukanie pliku MOJ
if find . -iname "*.MOJ" -mtime 0 >> /home/user/zdalny/log.txt;
then
printf "OK plik istnieje\n" >> /home/user/zdalny/log.txt
else
printf "NOK brak pliku <----- NOK\n" >> /home/user/zdalny/log.txt
fi
#Przejscie do folderu drugiego
cd /
cd /mnt/montownik/Program\ Files/MOJKAT/PODKATALOG/PLIKI/
#Szukanie pliku NKP
if find . -iname "*.NKP" -mtime 0 >> /home/user/zdalny/log.txt;
then
printf "OK plik istnieje\n------------------\n" >> /home/user/zdalny/log.txt
else
printf "NOK brak pliku <----- NOK\n------------------\n" >> /home/user/zdalny/log.txt
fi
#Przejscie i odmontowanie udzialu
cd /
umount /mnt/montownik
sleep 2
done
W rezultacie dostaję takie wyniki:
Sprawdzanie plików MOJ i NKP :
czw, 19 lut 2015, 08:32:41 CET
_______________________________________
Sprawdzam komputer 192.168.0.100
./KAT1/KAT2/KAT3/KAT4/KAT5/plik.MOJ
OK plik istnieje
./DRUGI_PLIK.NKP
OK plik istnieje
------------------
Sprawdzam komputer 192.168.0.101
./KAT1/KAT2/KAT3/KAT4/KAT5/1011.MOJ
OK plik istnieje
./DRUGI_PLIK.NKP
OK plik istnieje
------------------
Sprawdzam komputer 192.168.0.102
./KAT1/KAT2/KAT3/KAT4/KAT5/1014.MOJ
OK plik istnieje
./DRUGI_PLIK.NKP
OK plik istnieje
------------------
Sprawdzam komputer 192.168.0.103
./KAT1/KAT2/KAT3/KAT4/KAT5/1007.MOJ
OK plik istnieje
./DRUGI_PLIK.NKP
OK plik istnieje
------------------
Wszystko jest ok do momentu gdy dostaję jakieś śmieci lub w przypadku gdy pliku nie ma…
Czasami listuje więcej plików jak np tu:
Sprawdzam komputer 192.168.0.101
./KAT1/KAT2/KAT3/KAT4/KAT5/1011.MOJ
./KAT1/KAT2/KAT3/KAT4/KAT5/1012.MOJ
OK plik istnieje
./DRUGI_PLIK.NKP
OK plik istnieje
------------------
A gdy brakuje pliku dostaję informację OK
------------------
Sprawdzam komputer 192.168.0.103
./KAT1/KAT2/KAT3/KAT4/KAT5/1007.MOJ
OK plik istnieje
OK plik istnieje
------------------
Czy ktoś z Was może pomóc/podpowiedzieć co jest nie tak? Może coś źle napisane?