Pagina 1 di 1
Problema script
Inviato: ven 2 mar 2007, 13:13
da niofar
Buongiorno a tutti voi, è un piacere far parte della vostra community. Ho un problema con uno script bash. Premesso che sono veramente un principiante in materia e lavoro con Ubuntu vi espongo il problema che spero sia elementare:
Ho un server all'indirizzo 192.168.1.5 ad esempio e voglio creare uno script che dal mio pc apre ad esempio sul server la directory /home/server io farei così:
#!/bin/bash
SERVER= "192.168.1.5"
USR="utente"
OUT="out.txt"
ssh $USR@$SERVER w > $OUT
cd /home/server
ma non va...ritorna a
miopc@miopc:~$
Cosa sbaglio?
Chi mi spiega bene quel suggerimento che mi è stato dato...:
OUT="out.txt"
w > $OUT
grazie
Inviato: ven 2 mar 2007, 13:23
da masalapianta
che intendi con "aprire la directory"?
Inviato: ven 2 mar 2007, 13:29
da niofar
Quello che normalmente si farebbe con
cd /home/server
Inviato: ven 2 mar 2007, 13:35
da masalapianta
non capisco, quel "cd /home/server" vuoi farlo sul server remoto?
e a che serve quel "w" quando invochi ssh (non volevi fare chdir dentro /home/server? w non lo fa ma ti ritorna la ista degli utenti loggati sulla macchina)?
btw se invochi ssh non puoi aspettarti che tutti i conandi che seguono nello script siano eseguiti sul server remoto, ma saranno eseguiti solo dopo che ssh ritornera'
Inviato: ven 2 mar 2007, 13:51
da niofar
Quel w mi era stato erroneamente suggerito infatti. Io vorrei proprio eseguire nel server remoto i comandi inseriti nello script..c'è un modo? Non so come fare.
Grazie
Inviato: ven 2 mar 2007, 13:53
da niofar
In effetti i comandi nello script dopo ssh vengono eseguiti all'uscita di ssh, non ci avevo fatto caso.

Inviato: ven 2 mar 2007, 13:58
da masalapianta
niofar ha scritto:Quel w mi era stato erroneamente suggerito infatti. Io vorrei proprio eseguire nel server remoto i comandi inseriti nello script..c'è un modo? Non so come fare.
Grazie
se son pochi li passi come argomento a ssh (esattamente come hai fatto con "w"; se i comandi da eseguire sul server remoto sono viceversa piu' complessi e numerosi ti conviene creare uno script a parte con la roba da eseguire in remoto e infilare nel primo script un scp che porti il secondo script sul server e un ssh che lo esegua;
se non vuoi fare due script puoi farne uno solo con dentro una if che controlla su che macchina viene eseguito lo script (ad esempio usando hostname o uname -n) e in base a quello esegue una serie di istruzioni o un'altra
Inviato: ven 2 mar 2007, 14:01
da niofar
masalapianta ha scritto:niofar ha scritto:Quel w mi era stato erroneamente suggerito infatti. Io vorrei proprio eseguire nel server remoto i comandi inseriti nello script..c'è un modo? Non so come fare.
Grazie
se son pochi li passi come argomento a ssh (esattamente come hai fatto con "w"; se i comandi da eseguire sul server remoto sono viceversa piu' complessi e numerosi ti conviene creare uno script a parte con la roba da eseguire in remoto e infilare nel primo script un scp che porti il secondo script sul server e un ssh he lo esegua
Sei stato gentilissimo, adesso provo, mi spiegheresti meglio il discorso dell'scp?
Grazie 1000.
Inviato: ven 2 mar 2007, 14:03
da masalapianta
niofar ha scritto:masalapianta ha scritto:niofar ha scritto:Quel w mi era stato erroneamente suggerito infatti. Io vorrei proprio eseguire nel server remoto i comandi inseriti nello script..c'è un modo? Non so come fare.
Grazie
se son pochi li passi come argomento a ssh (esattamente come hai fatto con "w"; se i comandi da eseguire sul server remoto sono viceversa piu' complessi e numerosi ti conviene creare uno script a parte con la roba da eseguire in remoto e infilare nel primo script un scp che porti il secondo script sul server e un ssh he lo esegua
Sei stato gentilissimo, adesso provo, mi spiegheresti meglio il discorso dell'scp?
Grazie 1000.
scp copia su una macchina remota uno o piu' file e directory utilizzando un server ssh; man scp per magiori info
Inviato: ven 2 mar 2007, 14:39
da gioco
Puoi anche usare un "here document":
Codice: Seleziona tutto
#!/bin/sh
SERVER= "192.168.1.5"
USR="utente"
ssh $USR@$SERVER << EOF
cd pippo
ls
EOF
In pratica il testo che compare prima di EOF viene interpretato come una lista di comandi per ssh, come se fossi tu ad inserirli alla tastiera. E' utile per utilizzare programmi interattivi in modo non interattivo, ad esempio con ftp, vi.
Inviato: ven 2 mar 2007, 14:52
da niofar
gioco ha scritto:Puoi anche usare un "here document":
Codice: Seleziona tutto
#!/bin/sh
SERVER= "192.168.1.5"
USR="utente"
ssh $USR@$SERVER << EOF
cd pippo
ls
EOF
In pratica il testo che compare prima di EOF viene interpretato come una lista di comandi per ssh, come se fossi tu ad inserirli alla tastiera. E' utile per utilizzare programmi interattivi in modo non interattivo, ad esempio con ftp, vi.
Pseudo-terminal will not be allocated because stdin is not a terminal
Questa è la risposta inserendo come comandi soltanto un cd home.
Ciao.
Inviato: mar 6 mar 2007, 14:31
da niofar
Risolto un problema, come argomento dell'ssh ho dato sh ciao.sh dove ciao.sh è uno script inserito sul pc remoto che esegue le operazioni che volevo fossero eseguite.
Ho usato scp per portare sul server remoto un file out.txt con gli argomenti della funzione che avevo scelto sul pc locale e avevo inserito su un file di testo.
Adesso ho 2 problemi:
Lancio il primo script sul mio pc (locale) che mi permette di avviare il secondo script sul PC1 (remoto).
Problema 1)
Una volta che la funzione avviata nell'xterm del PC1 finisce il suo lavoro dovrebbe dare come risultato un grafico (che mi serve). Il problema è che quando la funzione ha finito il suo lavoro il grafico finale compare per un'istante brevissimo di tempo dopo di che la finestra di xterm si chiude.
Problema 2)
Mentre il PC1 lavora avrei la necessità di ripetere lo stesso discorso su PC2 (remoto) con lo stesso script. Il problema è che una volta che accedo ad ssh non riesco ad eseguire altre operazioni dallo stesso terminale, se non prima della fine del collegamento ssh. Ho provato ad eseguire ssh in backgroung (con un & alla fine) ma mi da un errore.
Mi esprimo male, comunque l'idea è questa.. voglio creare uno script da avviare nel mio pc che faccia questo:
1) Chiede l'indirizzo del pc1
2) Chiede l'indirizzo del pc2
3) Chiede quale file elaborare su pc1
4) Chiede quale file elaborare su pc2
5) Acceda contemporaneamente a pc1 e pc2 per fare le operazioni richieste sui server remoti
Grazie!!!
Ciao.