Portál AbcLinuxu, 10. května 2025 16:18

Dotaz: cron vs. expect

29.4.2013 18:23 hajoucha | skóre: 22
cron vs. expect
Přečteno: 332×
Odpovědět | Admin
Ahojda,

v cronu má root:
# crontab -l
* * * * * /home/test/bin/cuc.sh >> /tmp/crontest
cuc.sh vypadá takto:
# cat cuc.sh 
#!/usr/bin/expect -f
spawn ssh USERID@bmc3 temps
expect {
  "Password:"       {send PASSWORD\r}
}
interact
exit 0

Přesto se cronjob nevykoná, viz.
# cat /tmp/crontest 
spawn ssh USERID@bmc3 temps
Password: spawn ssh USERID@bmc3 temps
Password: spawn ssh USERID@bmc3 temps
Password: spawn ssh USERID@bmc3 temps
Password: spawn ssh USERID@bmc3 temps
Password: spawn ssh USERID@bmc3 temps
Password: spawn ssh USERID@bmc3 temps
Password:
tj. z nějakého důvodu chybí výpisy teplot, je to jinak než když pustím cuc.sh z příkazové řádky:
# ./cuc.sh 
spawn ssh USERID@bmc3 temps
Password: 
system> Temperatures are displayed in degrees Fahrenheit/Celsius
                 WR            W             T             SS            HS
---------------------------------------------------------------------------------------
Ambient Temp     102.20/39     109.40/43.00  84.20/29.00   114.80/46.00  122.00/50.00
PCI Riser 1 Temp 150.80/66     158.00/70.00  95.00/35.00   176.00/80.00  185.00/85.00
PCI Riser 2 Temp 150.80/66     158.00/70.00  84.20/29.00   176.00/80.00  185.00/85.00
CPU1 VR Temp     195.80/91     203.00/95.00  95.00/35.00   212.00/100.00 221.00/105.00
CPU2 VR Temp     195.80/91     203.00/95.00  91.40/33.00   212.00/100.00 221.00/105.00
DIMM AB VR Temp  195.80/91     203.00/95.00  89.60/32.00   212.00/100.00 221.00/105.00
DIMM CD VR Temp  195.80/91     203.00/95.00  86.00/30.00   212.00/100.00 221.00/105.00
DIMM EF VR Temp  195.80/91     203.00/95.00  84.20/29.00   212.00/100.00 221.00/105.00
DIMM GH VR Temp  195.80/91     203.00/95.00  86.00/30.00   212.00/100.00 221.00/105.00
PCH Temp         192.20/89     199.40/93.00  114.80/46.00  208.40/98.00  217.40/103.00


Netušíte někdo, v čem by mohl být problém? Mě napadá akorát to, že cuc.sh normálně trvá cca 4-5s. Nevím ale, proč by se jenom díky pauze nevykonal celý skript....

Popř... jak takovou věc debugovat?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.4.2013 19:19 hajoucha | skóre: 22
Rozbalit Rozbalit vše Re: cron vs. expect
Odpovědět | | Sbalit | Link | Blokovat | Admin
hmm, mám takové tušení, že chyba je v tom expect. Stačilo by mi, kdyby cuc.sh vypsal první řádek té teploty. Tj. ten, co začíná "Ambient Temp".
29.4.2013 19:51 potato
Rozbalit Rozbalit vše Re: cron vs. expect
Odpovědět | | Sbalit | Link | Blokovat | Admin
Opravdu není možné použít autentizaci klíčem jako normální člověk?

Jinak je ssh velmi pěkně se chovající příkaz, můžeš ho normálně strkat do rour, takže výstup z jedné strany spojení se zpracovává na druhé etc.
Zdeněk Zámečník avatar 29.4.2013 23:02 Zdeněk Zámečník | skóre: 26
Rozbalit Rozbalit vše Re: cron vs. expect
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zkus ten expect upravit podle tohoto příkladu.

Anebo si nainstaluj balíček sshpass, pokud máš tu možnost. Jeho použití je jednoduché: sshpass -p "pwd" ssh uid@server_name ls -l.

Ovšem příkláním se, jak už tu bylo zmíněno, spíše k použití SSH klíče...
Řešení 1× (hajoucha (tazatel))
30.4.2013 17:39 nomen omen
Rozbalit Rozbalit vše Re: cron vs. expect
Odpovědět | | Sbalit | Link | Blokovat | Admin
Místo příkazu
interact
použij
expect eof
(a ošetři si i korektní odhlašování z té sondy)

Interact totiž pracuje s pty, ale při volání z crontabu se žádný terminál nealokuje (snad teďka necanstám kraviny)

Ale jak doporučuje někdo výše, sshpass je pro tebe ta správná volba.
Řešení 1× (hajoucha (tazatel))
30.4.2013 18:14 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: cron vs. expect
Odpovědět | | Sbalit | Link | Blokovat | Admin

Fascinuje mne, jak často u dotazů na problémy s cronem tazatel tvrdí, že se job nevykoná, přestože jím poskytnuté informace svědčí o pravém opaku…

Zkusil jsem Google na "cron expect": první odkaz, druhý odkaz, … Zkusil jste to, co tam doporučují ("expect eof" místo "interact")?

30.4.2013 18:29 hajoucha | skóre: 22
Rozbalit Rozbalit vše Re: cron vs. expect
ano, to je ono! Díky.

Co se týče tvrzení "cronjob se nevykoná" - souhlasím a omlouvám se, nevyjádřil jsem se dost přesně. Měl jsem na mysli "cronjob se nevykoná podle mého očekávání". Zdá se, že je opravdu těžké ubránit se pokaždé podobným nepřesnostem...:(
30.4.2013 19:32 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: cron vs. expect
Ono je to právě dost podstatné - pro řešení problému je důležité vědět, jestli se skript opravdu nespustil (a chyba je pravděpodobně v cronu nebo v cron tabulkách) nebo jestli se sice spustil, ale chová se jinak, než se očekává (a chyba je pravděpodobně ve skriptu samotném a neoprávěných předpokladech). Podle mých zkušeností je druhá možnost podstatně častější.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.