Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Peterx 10 Listopadu 2010, 10:03:04
-
Viete mi niekto poradit?
Mam skript1 ktory spusta 2. Pokial to spustim manualne je vsetko ok, ale ak to dam spustit pod cronom tak mi v 2 skripre nejde podmienka.
Skript1:
#!/bin/bash
whois="/usr/bin/whois"
#rm="/bin/rm"
#nail="/usr/bin/nail"
wget="/usr/bin/wget"
dos2unix="/usr/bin/dos2unix"
cat="/bin/cat"
grep="/bin/grep"
cat /cesta/subor.txt | while read line; do /cesta/skript2.sh $line; done
Skript2:
#!/bin/bash
whois="/usr/bin/whois"
#rm="/bin/rm"
#nail="/usr/bin/nail"
wget="/usr/bin/wget"
dos2unix="/usr/bin/dos2unix"
cat="/bin/cat"
grep="/bin/grep"
xdom=${1}
whois $xdom | grep found > /dev/null
if [ $? -eq 1 ]; then
echo $xdom >>/cesta/obsadena.txt
else
echo $xdom >>/cesta/volna.txt
fi
-
Jak tam máš ve skutečnosti napsaný to /cesta ? Měla by tam bejt plná cesta.
Když nevíš kde je chyba, je dobrý si přesměrovat chybový výstupy někam do souborupříkaz 2> soubor
A tak mimochodem celý to jde napsat na jeden řádek :Pfor xdom in `cat soubor.txt`; do whois $xdom | grep found > /dev/null && echo $xdom >> volna.txt || echo $xdom >> obsadena.txt; done
-
Ta cesta je dobra a plna.. dokonca ked testujem vysledok vystupu
whois $xdom | grep found > /dev/null
tak mi to vracia 0, alebo 1
Ale ako by to ten if ignoroval, ale len ak to spustam z cronu, ak to spustim rucne, ide vsetko ok.
K tomuto:
for xdom in `cat soubor.txt`; do whois $xdom | grep found > /dev/null && echo $xdom >> volna.txt || echo $xdom >> obsadena.txt; done
nechapem zaciatku for xdom... xdom je moja premenna, ale definicia tej premennej tam chyba.. to za tym chapem, no som v tomto zaciatocnik a neviem ani co prinuti precitat kazdy riadok daneo suboru, kde kazdy riadok je jedna domena...
-
A kdyby bylo míso xdom i ?
for i in `cat soubor.txt`; do whois $i | grep found > /dev/null && echo $i >> volna.txt || echo $i >> obsadena.txt; done
ale všechny adresy mi háže (tvůj i můj skript) do obsadena.txt, takže nějak nevim k čemu to je
-
A kdyby bylo míso xdom i ?
for i in `cat soubor.txt`; do whois $i | grep found > /dev/null && echo $i >> volna.txt || echo $i >> obsadena.txt; done
ale všechny adresy mi háže (tvůj i můj skript) do obsadena.txt, takže nějak nevim k čemu to je
U mna moj skript funguje spravne pri rucnom spusteni, ale cez crona nie...
Skript vyssie na 1 riadok ma ten isty vysledok. Ak to spustim ja ide ok, ak to spustim cez crona tak nefunguje.. Samozrejme cesty som dopisal..
-
tak sem to zkusil dát do crontabu a funguje to normálně
* * * * * for i in `cat /home/pacholik/foo`; do whois $i | grep found > /dev/null && echo $i >> /home/pacholik/volná || echo $i >> /home/pacholik/obsazená; done
-
zkuste si ten skript pustit pomoci /bin/dash (a ne /bin/bash) - co to udela?
pokud to bude zlobit, tak zkuste v crontabu explicitne dat bash (SHELL=/bin/bash)
defaultni je pro cron /bin/sh (a ja to mam v ubuntu jako link na /bin/dash)
-
zkuste si ten skript pustit pomoci /bin/dash (a ne /bin/bash) - co to udela?
pokud to bude zlobit, tak zkuste v crontabu explicitne dat bash (SHELL=/bin/bash)
defaultni je pro cron /bin/sh (a ja to mam v ubuntu jako link na /bin/dash)
Skusil som vsetko, vysledok stale ten isty..
-
Neviem sice kde bol problem, ale, zacalo mi to blbnut aj ked som to spustal rucne, tak som to restartol a funguje to..
Je to tak trochu zahada..