Problema script

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Problema script

Messaggio 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
Ultima modifica di niofar il ven 2 mar 2007, 13:29, modificato 1 volta in totale.

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio da masalapianta »

che intendi con "aprire la directory"?

niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Messaggio da niofar »

Quello che normalmente si farebbe con
cd /home/server

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio 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'

niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Messaggio 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

niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Messaggio da niofar »

In effetti i comandi nello script dopo ssh vengono eseguiti all'uscita di ssh, non ci avevo fatto caso. :(

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio 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
Ultima modifica di masalapianta il ven 2 mar 2007, 14:02, modificato 1 volta in totale.

niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Messaggio 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.

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Messaggio 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

Avatar utente
gioco
Packager
Packager
Messaggi: 900
Iscritto il: dom 19 giu 2005, 0:00
Slackware: last stable
Località: in the court of the Wesnoth king
Contatta:

Messaggio 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.

niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Messaggio 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.

niofar
Linux 0.x
Linux 0.x
Messaggi: 7
Iscritto il: ven 2 mar 2007, 13:08

Messaggio 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.

Rispondi