Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Tech
 
[Misteri] -e si nasconde
Clicca QUI per vedere il messaggio nel forum
lallyblue
Ciao!
questa di oggi proprio mi lascia senza parole... spero davvero che qcuno mi chiarisca il mistero... :pensa:

se assegno ad una variabile pippo il valore '-e' non c'è santo che tenga, ma echo non la visualizza... :shock:
perché?

mi spiego meglio:

code:
[root@lab0204 root]# pippo=-q [root@lab0204 root]# echo $pippo -q [root@lab0204 root]# pippo=-e [root@lab0204 root]# echo $pippo [root@lab0204 root]#


ho provato anche con apici, virgolette, lo slash davanti al meno...
ma niente, non stampa nulla...
come mai? come posso risolvere?
grazie in anticipo!

Alf
Cambia shell
usi la bash ?

lallyblue
altra cosa...
io ho bisogno di controllare se un'opzione, passata come argomento di uno script, fa parte di un certo range di opzioni possibili.
X chiarire meglio, l'opzione può essere una tra le seguenti:
-e
-q
-ue
-uq
mi è venuto spontaneo pensare alle regexp e da quanto ho capito la sintassi dovrebbe essere qcosa del genere
/-u?[eq] /
eppure non c'è modo di passarlo come argomento di un grep
anche qui, ho provato con egrep, con grep -P, grep -e e tante altre...ma non c'è verso...
l'unica che funziona ma non come mi serve è
-u*[eq]
che però accetta anche -uuuue o -uuq
se non metto la stellina non accetta i semplici -e e -q
come diavolo faccio?!?!

tnx!!

lallyblue
sì sto usando la bash
ma non capisco dove sbaglio... :roll:

Alf
Originally posted by lallyblue
sì sto usando la bash
ma non capisco dove sbaglio... :roll:


Non credo sia un errore ...
Forse nella bash -e e' qualcosa di particolare .. pero non so ...


Per l'altra domanda ...
Non puoi usare case ?

jdhoring
Hai provato

pippo=\"-e\"
echo $pippo

?

Alf
Originally posted by jdhoring
Hai provato

pippo=\"-e\"
echo $pippo

?


ma cosi' ritornera' \"-e\" non -e

lallyblue
@alf boh, mi sembrava + sensato usare le regexp visto che (in teoria) era molto + banale... se solo non facesse le bizze...

@jd: mi stampa "-e" (anche con gli apici) che purtroppo non è cmq quello che mi serve :\

ah non va nemmeno se faccio semplicemente "echo -e" :(

Alf
Originally posted by lallyblue
@alf boh, mi sembrava + sensato usare le regexp visto che (in teoria) era molto + banale... se solo non facesse le bizze...

@jd: mi stampa "-e" (anche con gli apici) che purtroppo non è cmq quello che mi serve :\

ah non va nemmeno se faccio semplicemente "echo -e" :(


Ehmm lally credo sia un opzione del echo .. ma non dirti quale .. :)

Alf
Originally posted by Alf
Ehmm lally credo sia un opzione del echo .. ma non dirti quale .. :)


Ah ecco .. sul man in linea non lo dava.



Echo the STRING(s) to standard output.

-n do not output the trailing newline

-e enable interpretation of the backslash-escaped characters listed
below

-E disable interpretation of those sequences in STRINGs



Percio di -e -E -n non puoi fare l'echo

jdhoring
ma no... echo non ci deve nemmeno arrivare a valutare il -e

provato con

echo "-e"
echo \-e

?

ak47
dunque, il motivo per cui non visulizza il -e non è perche non la memorizza nella variabile $a (ad esempio), ma perche applica il flag -e al comando echo... quindi se quel -e ($a) ti serve in uno script di shell puoi usarlo tranquillamente.....
la RE che soddisfa la tua richiesta è [-e|-q|-ue|-uq]

Saluti

jdhoring
Su Solaris 9, Korn shell

$ pippo="-e"
$ echo $pippo
-e

Alf
Originally posted by jdhoring
ma no... echo non ci deve nemmeno arrivare a valutare il -e

provato con

echo "-e"
echo \-e

?


Con la bash ??
Il problema lo da solo con la bash JD!

Alf
Originally posted by ak47
dunque, il motivo per cui non visulizza il -e non è perche non la memorizza nella variabile $a (ad esempio), ma perche applica il flag -e al comando echo... quindi se quel -e ($a) ti serve in uno script di shell puoi usarlo tranquillamente.....
la RE che soddisfa la tua richiesta è [-e|-q|-ue|-uq]

Saluti


Esatto come dicevo nello stralcio dell'help :)

Boh io avrei fatto cosi'

case "$1" in

"-e"|"-q"|"-u"|"-uq")
command
command

;;
esac


:)

Alf
Ah ultima cosa lally se il problema e' proprio "stampare SOLO -e " ho una soluzione anche se non e' il massimo :)

lallyblue
tipo?

io semplicemente facevo un
if echo $variabile | grep <regexp>
then
command
else
command
fi

boh mi sembrava la soluzione +semplice... :\

si può adattare?

Alf
Originally posted by lallyblue
tipo?

io semplicemente facevo un
if echo $variabile | grep <regexp>
then
command
else
command
fi

boh mi sembrava la soluzione +semplice... :\

si può adattare?


con il case:


case "$variabile" in

"-e"|"-q"|"-u"|"-uq")
command1
command2
;;

*)
command3

;;
esac


Se il valore $variabile si trova fra -e -q -u -uq esegue i comandi command1 command2 in tutti gli altri casi (*) esegue command 3


per STAMPARE -e fai cosi' ...

echo \"-e\" | cut -c2,3


Non e' bellissimo ... ma funziona :)

DeepBlue
Originally posted by ak47
la RE che soddisfa la tua richiesta è [-e|-q|-ue|-uq]


in bash con *grep mi sa che così non funziona.

Meglio che passi tutto a egrep così:

code:
egrep "(^-)(e|q|ue|uq)"


Per il problema del -e..boh?

edit: anche io avevo pensato ad una soluzione simile a quella di alf (per l'assegnamento di -e) e mi sa che è l'unica strada, a meno di sostituire -e con qualcosaltro :D:D:D

lallyblue
l'opzione purtroppo non posso cambiarla, è quella che devo passare ad un programma x avere un certo risultato.
a questo punto userò l'egrep che mi hai suggerito, solo mi suonava strano che un comando come echo avesse tali limitazioni...
non c'è un comando alternativo all'echo x mostrare il contenuto delle variabili, vero?

Alf
Originally posted by DeepBlue
in bash con *grep mi sa che così non funziona.

Meglio che passi tutto a egrep così:

code:
egrep "(^-)(e|q|ue|uq)"


Per il problema del -e..boh?

edit: anche io avevo pensato ad una soluzione simile a quella di alf (per l'assegnamento di -e) e mi sa che è l'unica strada, a meno di sostituire -e con qualcosaltro :D:D:D


ma scusa ... fare un if in pipe a un egrep e' simulare un case ... O_o;; perche' simularlo quando c'e' ?! :)

lallyblue
beh perché di solito il case lo applico quando ho tante opzioni e diventerebbe difficile usare tanti if/then/else in cascata. visto che qui o l'opzione è tra quelle 4 (e allora esegue il comando) oppure è qualsiasi altra cosa (e allora stampa un mex d'errore) mi sembrava + logico usare un if/then/else... ma non sono una buona programmatrice quindi è facile che mi sbagli... ;)

DeepBlue
Originally posted by lallyblue
non c'è un comando alternativo all'echo x mostrare il contenuto delle variabili, vero?

ho paura di no :/

Originally posted by Alf
ma scusa ... fare un if in pipe a un egrep e' simulare un case ... O_o;; perche' simularlo quando c'e' ?!

E che ne so io? :D
Lally era partita dicendo che stava usando grep ed egrep, io non sapendo su cosa stesse lavorando, mi sono adeguato :D

Alf
Originally posted by lallyblue
beh perché di solito il case lo applico quando ho tante opzioni e diventerebbe difficile usare tanti if/then/else in cascata. visto che qui o l'opzione è tra quelle 4 (e allora esegue il comando) oppure è qualsiasi altra cosa (e allora stampa un mex d'errore) mi sembrava + logico usare un if/then/else... ma non sono una buona programmatrice quindi è facile che mi sbagli... ;)


Beh sono equivalenti alla fine.

E cmq questo e' il caso in cui hai piu' scelte .. il fatto che 4 scelte facciano fare la stessa azione e' irrilevante :)

Cmq dentro l'if devi richiamare il grep :)

Il case lo fa da solo il parsing

Cmq alla fine sta a te decidere ;)



Ci sono altri comandi al posto dell'echo ma danno tutti lo stesso problema

Printf per esempio :)

lallyblue
fico... :roll:

grazie mille cmq!

Alf
Originally posted by lallyblue
fico... :roll:

grazie mille cmq!


Anzi no ..
Ti ho trovato la soluzione

code:
pippo=-e printf "%s\n" $pippo


Cosi' stampa tutto cio' che vuoi :D

DeepBlue
grande Alf :D

Viry
Senza diventare matti, c'e' getopts per fare cio':
Nell'esempio lo script accetta le opzioni -h -a -b -c
code:
while getopts "habc" opt; do case $opt in h ) visualizzo_help ;; a) eseguo_una_cosa;; b ) faccio_altra_cosa;; .... esac done

Molto piu' comodo, no?
Qui la man page:
http://www.ss64.com/bash/getopts.html
e un po' di esempietti:
http://www.linuxlaboratory.org/27.php

Viry
In ogni caso, per controllare su una stringa e' uguale a un'altra, si usa if test:
in questo caso voglio che lo script dice gatto se lanciato con -e

code:
if test $1 = "-e"; then echo "gatto"; fi


viry@nocciolina ~ $ sh prova.sh -e
gatto
viry@nocciolina ~ $ sh prova.sh -i
viry@nocciolina ~ $

lallyblue
Originally posted by Viry
Senza diventare matti, c'e' getopts per fare cio':
Nell'esempio lo script accetta le opzioni -h -a -b -c
code:
while getopts "habc" opt; do case $opt in h ) visualizzo_help ;; a) eseguo_una_cosa;; b ) faccio_altra_cosa;; .... esac done

Molto piu' comodo, no?
Qui la man page:
http://www.ss64.com/bash/getopts.html
e un po' di esempietti:
http://www.linuxlaboratory.org/27.php


x curiosità: ma questo funziona anche quando ho opzioni tipo -ue, -uq ovvero con + lettere assieme? (sì so che -ue è come dire -u -e ma se l'utente inserisce -ue non va + bene x lo script, giusto? )

cmq lo tengo presente x la prossima occasione... x questa volta ho risolto con il case, effettivamente è quello che rende meglio :)

ora sto litigando un po' con il grep...
dal man mi sembra di aver capito che basta usare anche qui le regexp...
diciamo che ho un file "file.txt" che contiene una riga con "ciao pippo blah blah" e un'altra riga con "www.pippo.pip"
con il comando
cat file.txt | egrep \<pippo\>
mi aspetto di trovare solo la riga relativa a "ciao pippo blah blah" ovvero solo quella contornata da spazi, giusto?
ho provato anche \bpippo\b..
ma in entrambi i casi mi stampa entrambe le righe... ma se voglio la stringa esatta, contornata da spazi, che devo fa?!? :pensa:
tnxtnx!

Viry
Usa le virgolette: grep " pippo "

lallyblue
dhò...
ero convinta di averlo già provato invano... e invece funzia! ;)

ok... dai dai, altro quesito :D

ho un output di un comando che suona + o - così:
code:
FIELDNAME1 FIELDNAME2 FIELDNAME3 ... FIELDNAMEn value1 value2 value3 ... valuen ... ... ... ... ... OTHERFN1 OTHERFN2 ... value value value .... .... ...


e mi servono solo le righe della prima tabella, esclusi i titoli e la riga bianca tra le 2 tabelle...
finora ho usato l'awk:
comando | awk '/FIELDNAME1/, /$^/ {print $2}' | grep -v FIELDNAME1
il che però mi lascia ancora la riga vuota :roll:
qualche soluzione + elegante/efficente?

DeepBlue
semplicemente

comando | cut -d " " -f 1

Fra le virgolette dopo il -d metti \t se i campi sono separati da tabulatori ;)

Alf
Il comando che comando e' ?

lallyblue
ehm... io vorrei avere solo i valori della prima tabella... niente titoli né valori della seconda tabella...
ho provato il cut ma non va bene... mi stampa tutti i titoli e i valori della seconda tabella...

lallyblue
@alf, non è un comando di bash, è un comando di un sw che utilizzo...

tra l'altro, non ho specificato, ma i valori all'interno della tabella possono cambiare, mentre i titoli son sempre quelli.
inoltre anche il numero di righe della tabella è variabile...

l'awk mi funziona, solo che mi include i 2 estremi (la prima e l'ultima riga indicate nello script) mentre io le voglio escludere...

Alf
Si' volevo sapere quello.
E' un comando che dai e lui ti da in output il formato che hai scritto ?

DeepBlue
Originally posted by lallyblue
ehm... io vorrei avere solo i valori della prima tabella... niente titoli né valori della seconda tabella...
ho provato il cut ma non va bene... mi stampa tutti i titoli e i valori della seconda tabella...

Scusa, hai ragione, non avevo letto bene e avevo capito che ti serviva solo la prima colonna (così imparo a postare dal lavoro :D).

Ci penso e ti faccio sapere.

lallyblue
Originally posted by Alf
Si' volevo sapere quello.
E' un comando che dai e lui ti da in output il formato che hai scritto ?

esatto

DeepBlue
Allora, con questo:

code:
comando |tr -d "\n"| sed s/OTHERFN1/\\nOTHERFN1/ | grep FIELDNAME1


dovresto ottenere questo:

FIELDNAME1 FIELDNAME2 FIELDNAME3 value1 value2 value3

Da li, dovresti ottnere più o meno facilmente quello che ti serve

lallyblue
uhm...
direi di no... mi servono incolonnati come sono...

lallyblue
molto semplicemente, con il comando che ho incollato sopra ottengo una cosa di questo genere:
code:
----- FIELDNAMEx FIELDNAMEy valuea valuepippo valueb valuepluto valuec valueciccio ... ... valuez valuepaperone ----

(trattini esclusi)
quello che vorrei ottenere è la stessa cosa ma senza intestazione e senza la riga vuota in fondo...
purtroppo con awk non riesco a combinare la selezione del blocco tra FIELDNAME1 e la riga vuota con il fatto che non voglio le 2 righe in questione...
in pratica fa una selezione estremi inclusi, mentre a me serve estremi esclusi...
grazie cmq :)

DeepBlue
Originally posted by lallyblue
uhm...
direi di no... mi servono incolonnati come sono...


:D che pretese! :D

ok, fai così allora:

code:
comando |tr "\n" "@@@" | sed s/OTHERFN1/\\n\\nOTHERFN1/ | grep FIELDNAME1 | tr "@@@" "\n"|grep -v FIELDNAME1


Non è elegante, ma funziona :D


lallyblue
bene, quesito del giorno...
continuo qui xché riguarda sempre lo stesso script (chiamiamolo script.sh)...
(poi semmai splitto...)
ho la necessità di lanciare i comandi dello script da remoto, e pensavo di usare ssh
quindi ho creato un nuovo script, remotescript.sh ed ho 'inglobato' il codice dello script in questo:
code:
ssh nodename " ... <codice script> ... "


il problema è che quando lancio remotescript.sh, ssh mi va a leggere le variabili d'ambiente della macchina da cui lancio questo script e non quelle della macchina remota... questo mi causa non pochi problemi visto che la var PATH è diversa...

queste prove le prove che ho fatto:

- creato un file prova.sh e ci ho scritto dentro ssh nodename "echo $PATH"
- creato un file prova.sh e ci ho scritto dentro ssh nodename echo $PATH
--> queste 2 mi hanno stampato il PATH della macchina locale (quella d'ambiente)

- creato un file prova.sh e ci ho scritto dentro ssh nodename 'echo $PATH'
--> questa mi ha stampato il PATH dello user della macchina locale


l'unico modo x ora che ho trovato x avere la path della macchina remota è collegarmi e solo dopo, quando mi viene proposto il prompt, faccio echo $PATH.
però questo non posso farlo nello script

idee?

grazie mille!! :)

DeepBlue
Originally posted by lallyblue
l'unico modo x ora che ho trovato x avere la path della macchina remota è collegarmi e solo dopo, quando mi viene proposto il prompt, faccio echo $PATH.

AFAIK, è l'unico modo possibile, ma prova a chiedere in giro.

PS: la riga che ho postato ieri ha poi funzionato?

giulio
Originally posted by lallyblue
l'unico modo x ora che ho trovato x avere la path della macchina remota è collegarmi e solo dopo, quando mi viene proposto il prompt, faccio echo $PATH.
però questo non posso farlo nello script

idee?



ssh pippo.somewhere.net "echo \$PATH"

altrimenti la variabile $PATH viene valutata (e quindi il suo contenuto viene sostituito nella riga) prima di essere passata al
comando ssh.

lallyblue
funziona!!! ma grande Giulio!! :lode:

lallyblue
scusate se vi assillo, ma qui è tutta una catena di casini...risolvo uno e ne salta fuori un'altro... :|

a quanto pare devo usare sì il backslash, ma non basta, devo anche fare "su -" se no mi prende il $PATH sì ma non quello giusto (prende quello dello user... (?) )

quindi ora avrei una situazione di questo genere:
ssh nodename "su - -c comando1
comando 2
comando 3
...
comando n"
peccato che in questo modo prende le var. d'ambiente giuste solo il comando sulla prima riga...
come faccio a renderlo x tutti i comandi?
ho provato a mandare a capo dopo su -
ma mi resta lì senza dare segni di vita...
:help:

giulio
Originally posted by lallyblue
scusate se vi assillo, ma qui è tutta una catena di casini...risolvo uno e ne salta fuori un'altro... :|

a quanto pare devo usare sì il backslash, ma non basta, devo anche fare "su -" se no mi prende il $PATH sì ma non quello giusto (prende quello dello user... (?) )

quindi ora avrei una situazione di questo genere:
ssh nodename "su - -c comando1
comando 2
comando 3
...
comando n"



ssh root@pippo.somewhere.net "echo \$PATH; comando1; comando2 ; comando3"

i comandi (nel caso fossero script) devono essere sulla macchina remota.

Alf
Posso darti un consiglio ?

host remoto= HostA
host da cui operare = HostB

script sull' hostremoto : /usr/script/script.sh

HostB> ssh HostA /usr/scrit/script.sh

Invece di passargli il codice dello script passi il path dello script da lanciare. ;)

Alf
Originally posted by giulio
ssh root@pippo.somewhere.net "echo \$PATH; comando1; comando2 ; comando3"

i comandi (nel caso fossero script) devono essere sulla macchina
remota.


Esatto mi sa che lui vuole passare il codice dello script con l'ssh invece di eseguire lo script direttamente :)

Cosi' mi pare di aver capito :)

giulio
Originally posted by Alf
Esatto mi sa che lui vuole passare il codice dello script con l'ssh invece di eseguire lo script direttamente :)

Cosi' mi pare di aver capito :)


Vogliamo esagerare?

Se lo script e' sulla macchina locale e si chiama script.sh puoi fare:

ssh root@pippo.somewhere.net "$(cat script.sh)"

Alf
Originally posted by giulio
Vogliamo esagerare?

Se lo script e' sulla macchina locale e si chiama script.sh puoi fare:

ssh root@pippo.somewhere.net "$(cat script.sh)"


Oh certo :)
Pero' se lo deve usare sull'altra macchina ha piu' senso che sia li' no ? :)

Comunque credo che siano tutte cose utili che a lallyblue interessano :D anche se sono esagerazioni :)
No ? :)

lallyblue
:oops:
ok, ora mi mettete nell'imbarazzo della scelta... :D

qual è la soluzione migliore? la + sicura, efficace, efficiente, prestante... boh...
in base a cosa devo scegliere una soluzione +ttosto che un'altra?
grazie mille raga!! :)

Alf
Boh secondo me ha senso che se lo script deve girare solo sul server remoto e' il caso che si trovi li' sopra.
L'altro serve semplicemente per eseguirlo via ssh.

Cio' vuol dire che puoi collegarti da un server C e fare la stessa cosa
scrivendo solo

>ssh hostnameremoto /usr/script/script.sh

Senza doverti ricordare tutto lo script o scrivertelo ovunque :)

:)

lallyblue
Originally posted by giulio
ssh root@pippo.somewhere.net "echo \$PATH; comando1; comando2 ; comando3"

i comandi (nel caso fossero script) devono essere sulla macchina remota.


uhm... ho provato ma non va...
devo per forza aggiungere "su - -c "
e a quel punto già alla seconda riga non usa + le variabili d'amb. corrette...

la sintassi che uso è questa (all'interno di un remotescript.sh)

#!/bin/bash
ssh nodename "su - -c comando 1;
comando 2;
comando 3;
...
comando n"

dove sbaglio?

giulio
Originally posted by lallyblue
uhm... ho provato ma non va...
devo per forza aggiungere "su - -c "
e a quel punto già alla seconda riga non usa + le variabili d'amb. corrette...

la sintassi che uso è questa (all'interno di un remotescript.sh)

#!/bin/bash
ssh nodename "su - -c comando 1;
comando 2;
comando 3;
...
comando n"

dove sbaglio?


Sbagli nel volerti autenticare due volte. Se fai ssh root@nodename, non c'e' piu' bisogno di "su".
Ricapitolo:
se lo script e' locale:

ssh root@nodename "$(cat script.sh)"

se lo script e' remoto:

ssh root@nodename "script.sh"

e togli la riga con "su" dallo script, ovunque esso si trovi, lasciando solo l'elenco dei comandi separati da \n (invio).

Alf
Ehmmm ogni riga divisa da ; la esegue come comando a parte
Dovresti mettere davanti a tutti su - -c ...
Un po' complicata come cosa .. :)

lallyblue
@giulio: ho provato come dici (script locale da eseguire su macchina remota) ma non trova il path della macchina remota.
sulla macchina remota c'è installato un sw del quale nello script eseguo dei comandi.
naturalmente sulla macchina locale questo programma non c'è.
come conseguenza non riesce eseguire i comandi perché non son nel path...
(scusa la contortaggine... ;) )

giulio
Originally posted by Alf
Ehmmm ogni riga divisa da ; la esegue come comando a parte
Dovresti mettere davanti a tutti su - -c ...
Un po' complicata come cosa .. :)


nope:


[root@ghost root]# su - -c "ls -ld /tmp; ls -ld /tmp"
drwxrwxrwt 12 root root 69632 Aug 31 04:02 /tmp
drwxrwxrwt 12 root root 69632 Aug 31 04:02 /tmp

[root@ghost root]# uname -a
Linux ghost 2.6.12.5 #1 SMP Wed Aug 24 16:28:49 CEST 2005 i686 i686 i386 GNU/Linux

Alf
A maggior ragione metti lo script direttamente sulla macchina remota.
E poi su quella locale fai ssh hostremoto "pathscript/script"

giulio
Originally posted by lallyblue
@giulio: ho provato come dici (script locale da eseguire su macchina remota) ma non trova il path della macchina remota.
sulla macchina remota c'è installato un sw del quale nello script eseguo dei comandi.
naturalmente sulla macchina locale questo programma non c'è.
come conseguenza non riesce eseguire i comandi perché non son nel path...
(scusa la contortaggine... ;) )


Forse non ho capito molto bene il problema.
Diciamo che ho uno script script.sh sulla macchina locale fatto cosi':

code:
#!/bin/sh comando1 comando2 comando3 comando4


e faccio:

ssh root@macchinaremota "$cat(script.sh)"

la cosa funziona.
NON serve usare su!

Se non trova i comandi perche' non sono nel path basta modificare lo script sulla macchina locale in questo modo:

code:
#!/bin/sh export PATH=/una/dir/alquanto/strana:$PATH comando1 comando2 comando3 comando4

lallyblue
@alf: sì in quel modo funziona, ma volevo tentare di farlo anche da remoto...
finora mi collegavo in ssh e poi lo eseguivo sulla macchina remota. ma pensavo fosse possibile lanciarlo direttamente da remoto via ssh...

giulio
Originally posted by lallyblue
@alf: sì in quel modo funziona, ma volevo tentare di farlo anche da remoto...
finora mi collegavo in ssh e poi lo eseguivo sulla macchina remota. ma pensavo fosse possibile lanciarlo direttamente da remoto via ssh...


Forse non ti seguo....
Se fai come ho detto nell'ultimo post lo lanci direttamente da
remoto via ssh.
Per avere una terminologia comune la macchina locale e' quella su cui tu hai una shell aperta, mentre la macchina remota e' quella dove c'e' il software strano.

Alf
Originally posted by lallyblue
@alf: sì in quel modo funziona, ma volevo tentare di farlo anche da remoto...
finora mi collegavo in ssh e poi lo eseguivo sulla macchina remota. ma pensavo fosse possibile lanciarlo direttamente da remoto via ssh...


Scusa la differenza ?!
A parte quella concettuale ....

DeepBlue
Off-Topic:
bello 'sto thread!

lallyblue
concordo sulla terminologia...
la script è salvata sia in locale che in remoto.
se faccio
ssh nodename [invio]
e poi lancio la script, questa funziona regolarmente

ma se voglio dare un comando unico su una sola riga, facendo come dici tu[ssh root@nodename "$(cat script.sh)"] , mi dà quel problema...

cmq boh, ora devo scappare se no perdo il treno... riprendo il tutto lunedì :)
magari nel frattempo provo a cercare qualche buon tutorial a riguardo...anzi, se ne avete qualcuno da consigliarmi, è il benvenuto!

Grazie mille a tutti x l'aiuto! :)

:ciaoo:

Alf
Originally posted by lallyblue
concordo sulla terminologia...
la script è salvata sia in locale che in remoto.
se faccio
ssh nodename [invio]
e poi lancio la script, questa funziona regolarmente

ma se voglio dare un comando unico su una sola riga, facendo come dici tu[ssh root@nodename "$(cat script.sh)"] , mi dà quel problema...

cmq boh, ora devo scappare se no perdo il treno... riprendo il tutto lunedì :)
magari nel frattempo provo a cercare qualche buon tutorial a riguardo...anzi, se ne avete qualcuno da consigliarmi, è il benvenuto!

Grazie mille a tutti x l'aiuto! :)

:ciaoo:


Non ho mai detto di fare

ssh nodename [invio]
e poi lancio la script,


Ho detto:
ssh nodename pathscript/script [invio]


In pratica il comando che dai e' "lancia lo script sulla macchina remota" invece che "codice dello script"

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate