Discussione:
comportamento script differente da bash a cron
(troppo vecchio per rispondere)
xserver80
2011-07-06 17:20:02 UTC
Permalink
Ciao a tutta la lista,

vi scrivo per un problema con uno script bash: ho bisogno di
connettere un server remoto con ssh inverso su un altro server.

Ho realizzato il seguente scriptino, integrando expect per l’invio
della password:
--------------------
#!/bin/bash
# Va eseguito tramite CRONTAB ogni 30 minuti
# es. crontab: 0,30 * * * * /etc/script /sshInverso.sh
echo "controllo se e' attivo il processo di ssh inverso."
if [ -n "`ps ax | grep 192.168.1.2 | grep ssh`" ]
then
echo "processo attivo, non eseguo nulla."
exit 0
else
echo "processo non attivo, do il comando per attivarlo"
expect -c "set timeout 5;\
spawn ssh -R 9000:127.0.0.1:22 -p 22 -l root
192.168.1.2 -f -N ;\
match_max 10000;\
expect *assword:*;\
send – mia_password\r;\
interact;"
fi
echo "esco"
exit 0
-----------------------

Il problema è che se eseguo lo script manualmente da bash funziona
correttamente, mentre da crontab non conclude l’esecuzione
correttamente e quindi non si crea il tunnel.
In particolare durante l’esecuzione “in cron” i parametri passati ad
expert non vengono eseguiti.
Non riesco a capire perché tramite cron non esegue correttamente questi comandi…

Avete qualche idea?

Grazie,
Federico
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@mail.gmail.com
Carlo
2011-07-06 18:00:02 UTC
Permalink
Post by xserver80
Ciao a tutta la lista,
vi scrivo per un problema con uno script bash: ho bisogno di
connettere un server remoto con ssh inverso su un altro server.
Il problema è che se eseguo lo script manualmente da bash funziona
correttamente, mentre da crontab non conclude l’esecuzione
correttamente e quindi non si crea il tunnel.
In particolare durante l’esecuzione “in cron” i parametri passati ad
expert non vengono eseguiti.
Non riesco a capire perché tramite cron non esegue correttamente questi comandi…
Avete qualche idea?
Io ho il tuo stesso problema su una cosa simile, alcune mail di report
(dopo l'esecuzione di un certo script) non mi vengono inviate se le
faccio eseguire a cron.
A mano ovviamente funzionano egregiamente.

Ti posso consigliare questo da mettere in crontab:

*/5 * * * * root /script/pippo

che sarebbe esegui pippo ogni 5 min con utente root

aspetto anche io un idea di qualcuno :)
Post by xserver80
Grazie,
Federico
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@gmail.com
Carlo
2011-07-14 16:50:02 UTC
Permalink
Post by Carlo
Post by xserver80
Ciao a tutta la lista,
vi scrivo per un problema con uno script bash: ho bisogno di
connettere un server remoto con ssh inverso su un altro server.
Il problema è che se eseguo lo script manualmente da bash funziona
correttamente, mentre da crontab non conclude l’esecuzione
correttamente e quindi non si crea il tunnel.
In particolare durante l’esecuzione “in cron” i parametri passati ad
expert non vengono eseguiti.
Non riesco a capire perché tramite cron non esegue correttamente questi comandi…
Avete qualche idea?
Io ho il tuo stesso problema su una cosa simile, alcune mail di
report (dopo l'esecuzione di un certo script) non mi vengono inviate
se le faccio eseguire a cron.
A mano ovviamente funzionano egregiamente.
Bingo!

il problema erano alcune lettere accentate nel testo del messaggio
email che mi mandavo come report e che nail/mailx non interpretavano.

mettendo prima dello script così:

14 18 * * * LANG=en_US.UTF-8 /script/prova

o direttamente dopo le altre variabili del crontab così:
LANG=en_US.UTF-8

funziona tutto correttamente.

A presto
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@gmail.com
gollum1
2011-07-06 18:10:03 UTC
Permalink
Post by xserver80
Ciao a tutta la lista,
vi scrivo per un problema con uno script bash: ho bisogno di
connettere un server remoto con ssh inverso su un altro server.
Ho realizzato il seguente scriptino, integrando expect per l’invio
--------------------
#!/bin/bash
# Va eseguito tramite CRONTAB ogni 30 minuti
# es. crontab: 0,30 * * * * /etc/script /sshInverso.sh
echo "controllo se e' attivo il processo di ssh inverso."
if [ -n "`ps ax | grep 192.168.1.2 | grep ssh`" ]
then
echo "processo attivo, non eseguo nulla."
exit 0
else
echo "processo non attivo, do il comando per attivarlo"
expect -c "set timeout 5;\
spawn ssh -R 9000:127.0.0.1:22 -p 22 -l root
192.168.1.2 -f -N ;\
match_max 10000;\
expect *assword:*;\
send – mia_password\r;\
interact;"
fi
echo "esco"
exit 0
-----------------------
Il problema è che se eseguo lo script manualmente da bash funziona
correttamente, mentre da crontab non conclude l’esecuzione
correttamente e quindi non si crea il tunnel.
In particolare durante l’esecuzione “in cron” i parametri passati ad
expert non vengono eseguiti.
Non riesco a capire perché tramite cron non esegue correttamente questi comandi…
Avete qualche idea?
Grazie,
Federico
mi viene il sospetto che sia perché se lo lanci manualmente sei in una shell,
e quindi hai tutti i dati della shell di supporto... se lo lanci con cron
no...

prova a lanciarlo con il comando sh in testa...

crontab: 0,30 * * * * "/usr/bin/bash /etc/script/sshInverso.sh"

(non sono sicuro se ci vogliono o meno le doppie virgolette per passare i
parametri allo script.

Byez
--
Gollum 1
Tessssssoro, dov'é il mio tesssssssoro...
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@tiscali.it
gollum1
2011-07-06 18:30:02 UTC
Permalink
Post by xserver80
Ciao a tutta la lista,
vi scrivo per un problema con uno script bash: ho bisogno di
connettere un server remoto con ssh inverso su un altro server.
[...]

la mia precedente risposta potrebbe anche funzionare, perché forzi l'uso di
bash...

a quanto pare questo è un problema della nuova console che viene usato da
debian (dash)... anche su ubuntu hanno lo stesso problema, che qualcuno ha
risolto redirezionando sh a bash invece che a dash

http://redomino.com/it/labs/blog/luca-cipriani/cron-non-esegue-gli-script-
ecco-la-soluzione


però mi pare strano... tu nel tuo script hai già forzato l'uso di bash invece
che dash...


#!/bin/bash


fammi sapere se hai avuto qualche risultato ad usare la chiamate di bash
direttamente sulla riga di cron...

p.s.: credo di aver scritto /usr/bin/bash invece di /bin/bash nella riga di
cron...


Byez
--
Gollum 1
Tessssssoro, dov'é il mio tesssssssoro...
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@tiscali.it
Davide Prina
2011-07-06 18:40:01 UTC
Permalink
Post by xserver80
Il problema è che se eseguo lo script manualmente da bash funziona
correttamente, mentre da crontab non conclude l’esecuzione
correttamente e quindi non si crea il tunnel.
questo perché quando esegui lo script tu hai le variabili d'ambiente
impostate correttamente, quando invece lo esegue crontab queste non sono
impostate.

Per verificare quanto detto è sufficiente mettere un'istruzione tipo:
set > /tmp/variabili_ambiente

e confrontare i risultati ottenuti con le due diverse esecuzioni dello
script.

Ciao
Davide
--
Dizionari: http://linguistico.sourceforge.net/wiki
Motivi per non comprare/usare ms-windows-vista:
http://badvista.fsf.org/
Non autorizzo la memorizzazione del mio indirizzo su outlook
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@gmail.com
gollum1
2011-07-06 22:10:01 UTC
Permalink
ahi... ahi... top quoting, non va bene...
http://www.krisopea.it/mvp/Quoting.htm

(segue risposta in bottom quoting).
Scusate ma perchè ubuntu e debian sono due comunità separate??
Non provengono dagli stessi fondatori?
Sì, sono due comunità separate, ma spesso sovrapposte (molti utenti di una
distro hanno contatti o sono utenti anche dell'altra distro)...

molte (ma non tutte, ancora) le soluzioni che trovi per una distro possono
essere applicate anche all'altra distro...

debian è meglio... ubuntu ha aiutato a raggiungere le masse...


e no... non sono degli stessi fondatori...
o per lo meno...

ubuntu è una derivata da debian, se vista così allora... ma in realtà ubunto
è di Canonical...

San Google, wikipedia, o meglio ancora le pagine dei due progetti, contengono
informazioni esaurienti su entrambe le distro, poi puoi tirare le tue
conclusioni.

Byez
--
Gollum 1
Tessssssoro, dov'é il mio tesssssssoro...
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@tiscali.it
xserver80
2011-07-07 08:20:01 UTC
Permalink
Allora, non funziona nè forzando bash da cron nè aggiungendo l'utente root.
Però facendo ancora analisi ho notato che, sul server a cui vado a
connettermi, arriva effettivamente la connessione ssh (stando a
/var/log/auth.log), viene accettata la password, ma poi
istantaneamente viene richiusa la connessione.
A questo punto il problema dovrebbe essere in expect, non
nell'esecuzione dello script...
Cosa ne dite?

Grazie,
ciao!
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@mail.gmail.com
Paolo Sala
2011-07-07 08:30:02 UTC
Permalink
Post by xserver80
Allora, non funziona nè forzando bash da cron nè aggiungendo l'utente root.
Però facendo ancora analisi ho notato che, sul server a cui vado a
connettermi, arriva effettivamente la connessione ssh (stando a
/var/log/auth.log), viene accettata la password, ma poi
istantaneamente viene richiusa la connessione.
A questo punto il problema dovrebbe essere in expect, non
nell'esecuzione dello script...
Bhé per vedere se è quello prova con ssh-copy-id e quindi a non passare
più password ma connetterti tramite certificati.

Ciao

Piviul
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@riminilug.it
xserver80
2011-07-07 11:50:03 UTC
Permalink
Il 07 luglio 2011 10:20, Paolo Sala <***@riminilug.it> ha scritto:
...
Post by Paolo Sala
Bhé per vedere se è quello prova con ssh-copy-id e quindi a non passare
più password ma connetterti tramite certificati.
Ciao
Piviul
BINGO!
Utilizzando SSH con le chiavi e senza password funziona benissimo!

Lo script definitivo
------------------------------------
#!/bin/bash
echo "controllo se e' attivo il processo di ssh inverso." >> sshInverso.log
if [ -n "`ps ax | grep 192.168.2.2 | grep ssh`" ]
then
echo "processo attivo, non eseguo nulla." >> sshInverso.log
exit 0
else
echo "processo non attivo, do il comando per attivarlo" >> sshInverso.log
expect -c "spawn ssh -R 9002:127.0.0.1:22 -p 22 -l root 192.168.2.2 -f
-N ;\expect *assword:*;\send -- \r;\interact -o EOF return;\exit;" >>
sshInverso.log
fi
echo "esco" >> sshInverso.log
exit 0
------------------------------------

Grazie a tutti e grazie Paolo!
Buona giornata!

p.s., ma Carlo Tu hai risolto con gli altri suggerimenti?
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/CANtWxvHVLssEuA+***@mail.gmail.com
Carlo
2011-07-07 19:50:02 UTC
Permalink
Post by xserver80
BINGO!
Utilizzando SSH con le chiavi e senza password funziona benissimo!
p.s., ma Carlo Tu hai risolto con gli altri suggerimenti?
hehe no non ancora
faccio qualche prova ma credo che il problema rimanga come rimaneva a te.
anche perchè in testa al crontab c'è questo:
SHELL=/bin/bash

ho fatto fare un po di log a set(come suggerito da Davide) e appena ho
un attimo controllo se ci sono differenze e quali e vi faccio sapere :)

a presto
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@gmail.com
c***@gmail.com
2011-07-14 19:00:02 UTC
Permalink
Io ho un toshiba tecra a9 ed tecra m10. Il secondo me lo sono dimenticato per due giorni ed una notte nel cortile della ditta, quei due giorni non ha mai smesso di piovere... Ho lasciato il portatile un paio d'ore davanti al camino ad asciugare e funziona senza problemi, ed io il portatile per lavoro lo uso almeno 12 ore al giorno.

Ciao

Inviato da HTC

----- Reply message -----
Da: "Carlo" <***@gmail.com>
A: <debian-***@lists.debian.org>
Oggetto: [RISOLTO] comportamento script differente da bash a cron
Data: gio, lug 14, 2011 18:27
Post by Carlo
Post by xserver80
Ciao a tutta la lista,
vi scrivo per un problema con uno script bash: ho bisogno di
connettere un server remoto con ssh inverso su un altro server.
Il problema Ú che se eseguo lo script manualmente da bash funziona
correttamente, mentre da crontab non conclude l’esecuzione
correttamente e quindi non si crea il tunnel.
In particolare durante l’esecuzione “in cron” i parametri passati ad
expert non vengono eseguiti.
Non riesco a capire perché tramite cron non esegue correttamente
questi comandi

Avete qualche idea?
Io ho il tuo stesso problema su una cosa simile, alcune mail di
report (dopo l'esecuzione di un certo script) non mi vengono inviate
se le faccio eseguire a cron.
A mano ovviamente funzionano egregiamente.
Bingo!

il problema erano alcune lettere accentate nel testo del messaggio
email che mi mandavo come report e che nail/mailx non interpretavano.

mettendo prima dello script così:

14 18 * * * LANG=en_US.UTF-8 /script/prova

o direttamente dopo le altre variabili del crontab così:
LANG=en_US.UTF-8

funziona tutto correttamente.

A presto
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@gmail.com
gollum1
2011-07-15 13:00:02 UTC
Permalink
Post by c***@gmail.com
Io ho un toshiba tecra a9 ed tecra m10. Il secondo me lo sono dimenticato
per due giorni ed una notte nel cortile della ditta, quei due giorni non
ha mai smesso di piovere... Ho lasciato il portatile un paio d'ore davanti
al camino ad asciugare e funziona senza problemi, ed io il portatile per
lavoro lo uso almeno 12 ore al giorno.
e che c'entra questo con il post originale?

Byez
--
Gollum 1
Tessssssoro, dov'é il mio tesssssssoro...
--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-***@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a ***@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-***@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact ***@lists.debian.org
Archive: http://lists.debian.org/***@tiscali.it
Loading...