|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
[Script BASH] Lanciare un comando ssh
Ciao a tutti,
dovrei lanciare, da uno script un comando su una macchina remota tramite ssh. Il mio problema è il seguente come faccio ad aprire una sessione ssh? Se io do ssh user@host mi chiede la password subito dopo....come posso fare per fornirla direttamente in input? Grazie, ciao ciao. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Ciao,
nel mio script ho inserito questi comandi: Codice:
ssh $USER_SERVER@$HOST_WHITEBOARD /usr/local/bin/expect "*ssh/id_rsa*" /usr/local/bin/send -- "${PASSW_SERVER}\r" /usr/local/bin/send -- "\r" Quote:
Grazie, ciao ciao. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Mi sa che non ho spawn
![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
prova a togliere /usr/local/bin dalle chiamate dei comandi
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Ciao,
ho installato expect, spawn non lo trovo e non trovo send (se cerco com yum). Ho una redhat. Cosa posso fare? Ho provato a togliere /usr/local/bin e non mettere niente, come ho provato /usr/bin, come ho provato singolarmente i comandi. Dopo l'installazione trovo solo expect. Qualche idea? Grazie, ciao ciao. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
|
prova a digitare il nome del comando direttamente su terminale.
così se è installato ti dovrebbe dire che la sintassi è sbagliata, o alternativamente ti dovrebbe dire in quali pacchetti puoi reperirlo |
![]() |
![]() |
![]() |
#8 | ||||
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Questo per spawn:
Quote:
Quote:
Per send: Quote:
Quote:
|
||||
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Mi pare che spawn e send siano dei comandi di expect, non dei veri e propri eseguibili.
Devi usare uno script del tipo: Codice:
#!/usr/bin/expect -f <comando1> ... <comandoN> ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Codice:
#!/bin/bash HOST="localhost" USER="myuname" PASS="mypassword" VAR=$(expect -c " spawn ssh $USER@$HOST expect \"password:\" send \"$PASS\r\" expect \"\\\\$\" send \"ls\r\" expect -re \"$USER.*\" send \"logout\" ") echo "===============" echo "$VAR" |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Una alternativa può essere quella di usare un certificato per non dover mai usare la password:
http://linuxproblem.org/art_9.html Nel caso tu voglia pure un certificato protetto da password puoi usare anche la procedura sopra descritta con ssh-agent (per inserire una volta sola la password all'avvio) http://mah.everybody.org/docs/ssh
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Ciao,
grazie mille dell'aiuto. Sono riuscito a fare quello che serviva grazie ancora. Ora ho un piccolo problema. In pratica uso ssh-agent ed ssh-add, con quello che mi hai suggerito riesco correttamente ad eseguire l'operazione. Adesso ho un altro problema. Per esempio. Successivamente nello script eseguo il comando: ssh server04 Effettivamente accedo a quel server ma a quel punto lo script non avanza con il comando seguente ma ottengo il controllo della console. Codice:
VAR=$(expect -c " spawn ssh-add expect \"password:\" send \"$PASS\r\" ") echo "===============" echo "$VAR" echo "Vado sulla macchina server04" ssh server04 sqlplus / as dba<<EOF startup / EOF Come dovrei impostare il tutto per riuscire a far girare lo script? Grazie mille, ciao ciao. |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Se vuoi far eseguire dei comandi devi specificare il singolo comando in uno script da caricare sul sistema remoto preventivamente. In alternativa puoi usare "here-document" per leggere i comandi da pipe, ad esempio Codice:
ssh server04 << END sqlplus / as dba<<EOF startup / EOF END
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Grazie mille!
Continuo ad avere un problema in una questione simile. Nello script ho inserito il seguente codice: Codice:
ssh $HOST_WHITEBOARD<<END COMMAND_GET_PID_WHITE="ps aux | grep gaia.dpct.pfs.launcher.PFSCoordinatorTask | awk '/Sl+/ {print \$2}' | awk 'begin {row=0} row==0 {print; row++} row>0 {next}'" echo "Comando da lanciare:" echo $COMMAND_GET_PID_WHITE echo "Provo a prendere il PID" PID=`eval $COMMAND_GET_PID_WHITE` echo "Pid trovato: $PID" kill -9 $PID #eval $WHITEBOARD END Grazie, ciao ciao. |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Aug 2004
Città: Palermo
Messaggi: 1079
|
Ciao ho risolto cambiato la prima riga da:
Codice:
ssh $HOST_WHITEBOARD<<END Codice:
ssh $HOST_WHITEBOARD<<"END" |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:01.