Newsgroup: it.comp.os.linux.sys
Titolo: Connessione a shell multiple

ciao a tutti,
sapete indicarmi un metodo per poter inviare comandi in contemporanea
a più shell su diverse macchine?
ad esempio se ho
lx-01
lx-02
lx-03
lx-04
lx-05
che sono macchine identiche (ad eccezione di /etc/hosts /etc/hostname)
sui quali devo eseguire un installazione e la sostiuzione di alcuni
file...
esiste un modo per centralizzare questa operazione?
grazie!

 a più shell su diverse macchine?
Se vuoi un sistema interattivo il migliore che ho trovato è decisamente 
multi-gnome-terminal, ma che purtroppo non è più manutenuto e richiede le 
gtk1 che non si trovano più facilmente su sistemi moderni.
Alternativamente puoi usare mrxvt anche se il setup è un po' meno immediato 
e meno flessibile di MGT. Esiste anche pconsole che non ho mai usato ma che 
dovrebbe essere analoga.
Un sistema non interattivo invece può essere banalmente uno script di shell 
che esegue le chiamate ssh oppure se vuoi qualcosa di più sofisticato hai 
pssh (Parallel ssh).
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.


grazie ci d'ho un occhiata!

 sofisticato hai pssh (Parallel ssh).
O anche tentakel, o uno di quelli elencati qui:
http://tentakel.biskalar.de/similar/

 a più shell su diverse macchine?
clusterssh

On 5 Mar, 21:15, "Cristian \"sengo\" Mammoli" <se...@nonexistent.fake>
wrote:

ClusterSSH sembrrebbe fare al caso mio.. non ho guardato bene ma
permette per caso di dare in input un file con l' elenco di
utente@host ?

> esiste un modo per centralizzare questa operazione?
script bash + script expect per l'interazione

 script bash + script expect per l'interazione
ho visto qualcosa, ma direi che clusterSSH è ottimo

 ho visto qualcosa, ma direi che clusterSSH č ottimo
visto  che non lo conosco non mi pronuncio :)
comunque con bash+ expect sono davvero poche righe di codice, io lo uso
spesso per automatizzare rsync verso macchine che non usano chiavi per
l'autenticazione, lo script exčpect sono una decina di righe quello bash
altrettante, e non hai da installare niente

Cristian "sengo" Mammoli ha scritto:

Fikerrimo e non lo conoscevo, grazie mille :D

Oggi mi è toccato usarlo ma ho avuto un amara sorpesa...
# cssh 
ro...@10.10.10.2
 
ro...@10.10.10.3
WARNING 10.10.10.2 unknow
WARNING 10.10.10.3 unknow
quel che non ho capito è che se faccio ssh -l root 10.10.10.2 o ssh -l
root 10.10.10.3 funziona...
A qualcuno è capitato qualcosa di simile?

 altrettante, e non hai da installare niente
puoi postare il codice?

 puoi postare il codice?
questo è il codice che uso per fare rsync tra due macchine diverse,
comunque è abbastanza semplice da capire ed adattare ale tue esigenze
#!/usr/bin/expect -f
# set Variables
set user [lrange $argv 0 0]
set password [lrange $argv 1 1]
set host [lrange $argv 2 2]
set remotedir [lrange $argv 3 3]
set localdir [lrange $argv 4 4]
#timeout infinito
set timeout -1
# now connect to remote UNIX box (ipaddr) with given script to execute
spawn rsync -axv $localdir -e ssh  $user@$host:$remotedir
match_max 1000000
# Look for passwod prompt
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"
# send blank line (\r) to make sure we get back to gui
send -- "\r"
expect eof
dallo script bash richiamo quello expect cosi:
(dopo aver valorizzato le variabili)
./remotecopy.exp $user $password $host $remotedir $localdir
ciao


mm, ma per ogni singolo comando da impartire a sistemi devi modificare
lo script?

 lx-05
in realtà, visto che esiste multixterm, niente di quello che ti hanno 
suggerito secondo me è molto corretto.
con multixterm, tu copi un comando, lo incolli tramite la consolina, e il 
comando viene incollato su tutte le finestre.
multixterm fa parte di uno dei pacchetti relativi ad expect... in pratica 
è uno script per expectk.
-- 
echo onailimissaM | awk 'BEGIN { FS = "" }
{ for (i = NF; i >= 1; i-- )
  printf $i }'; echo



rispondo a te, che sei l'unico che ci capisce qualcosa in questo gruppo.
Per questa cosa qui, in particolare chi fa testing, utilizza 
"multixterm" (che è uno script per expectk).


 lo script?
diciamo che se parametrizzi tutto per bene, no

 ./remotecopy.exp $user $password $host $remotedir $localdir
esiste già lo script expect ad-hoc: multixterm


 "multixterm" (che è uno script per expectk).
Mah, veramente penso che dipenda dalle specifiche esigenze e/o
condizioni...ad esempio, da quello che vedo per usare multixterm e' utile
conoscere tcl/tk (ed averlo installato, oltre ad expect), cosa che con gli
altri non e' necessaria. 
Io sono un sostenitore del "ognuno usi cio' con cui LUI e' piu' produttivo"
(possibilmente dopo avere provato un buon numero di alternative), quindi
ben venga anche il tuo consiglio, se serve a dare piu' ampia visione al'OP.
Comunque anche clusterssh apre tanti xterm...

il mio problema non è il realizzare uno script, ma devo avere uno
strumento per poter gestire in contemporanea 16 macchine uguali...
Clusterssh lo trovo un ottimo strumento , ma mi da errori tipo
WARNING 10.10.10.3 unknow
nonostante l' host funzioni con una sessione ssh -l root
qualche idea?

 con gli altri non e' necessaria.
no, è necessario lanciarlo :) Con gli opportuni switch ovviamente.


 qualche idea?
Supponendo che tu sia in Ubuntu:
$ apt-get install expect
$ expect_multixterm -xc "ssh %n" host1 host2 host3
Fine.


 no, è necessario lanciarlo :) Con gli opportuni switch ovviamente.
Se non mi sono perso nulla, per lanciarlo e' necessario averlo
installato :), cosa che, almeno nella mia esperienza, non e' cosi' comune,
soprattutto sui server (anche se riconosco che probabilmente un tool cosi'
sara' probabilmente eseguito da una workstation, non da un server, quindi
il problema potrebbe non porsi).
E comunque leggevo nell'help che, visto che gli action files contengono
codice tcl, penso che per sfruttare a fondo il programma sia utile
conoscere il tcl, in modo da poter scrivere tali file (e infatti ho
detto "e' utile", non e' necessario), mentre per i programmi che non usano
tcl nessuno di questi problemi si pone. Tutto qui, nessuna polemica.

 installato :)
root@yasna: /usr/local/bin # clusterssh
bash: clusterssh: command not found
root@yasna: /usr/local/bin # 
ma vuoi vedere che bisogna installare anche clusterssh ? :)
Chiaramente, come dicevi tu, multixterm lo userai sulla tua workstation e 
non dai server.
Vorrei provare clusterssh (così mi toglierei dai piedi xterm, e la gui 
tcl/tk), però vi devo fare una domanda prima: clusterssh richiede di 
installare componenti sui server, o funziona tutto dalla workstation?
Se devo installare roba sui server, è assolutamente da scartare.


 ma vuoi vedere che bisogna installare anche clusterssh ? :)
Parlavo di tcl/tk/expect, che sono prerequisiti per multixterm. Comunque,
ora che guardo bene, anche clusterssh ha una dipendenza da Perl e alcuni
moduli Perl tra cui perl-tk, quindi in realta' potrebbe esserci del lavoro
da fare anche per installare clusterssh. Per fortune molte distro risolvono
le dipendenze automaticamente. In definitiva, magari anche cio' che e' gia'
installato o che si e' disposti ad installare potrebbe essere un criterio
per cui uno sceglie una soluzione o un'altra.

 Se devo installare roba sui server, è assolutamente da scartare.
Direi che nessuno dei programmi menzionati richiede di installare nulla sul
server (se non ovviamente ssh, possibilmente con autenticazione a chiave
pubblica, o altri metodi di accesso). In particolare, la documentazione di
clusterssh non menziona nulla in proposito.

 Perl e alcuni moduli Perl tra cui perl-tk, 
mmmh .... mi sa tanto di quella volta che stavo lavorando su uno script 
expect, e arriva il mio collega: "ma questo si può fare in perl"
io: "siamo sicuri, che il perl da solo fa una cosa del genere"
lui: "certo che si"
invece era certo che no. Per farlo bisognava installare libexpect-perl :)
Che sarebbe la variante perl-like, piuttosto di quella tcl-like.
Mi pare che tu sia bravo in perl... magari ti ho passato una informazione 
utile.
Il TCL forse non è difficilissimo, però ha le sue cose strane. Ad 
esempio, dopo una estenuante ricerca ho finalmente capito come si fa il 
grep di tutto: (...)
Poi c'è l'altra sintassi: (.*)   ma questa non fa il grep di tutto.
Quindi un sincero vaffa di cuore va sicuramente a chi ha concepito una 
cosa del genere.



no basta ci sia sshd up and running...
null' altro fa che aprire 'n' connessioni SSH per poi spedire in
contemporanea su tutti gli xterm i comandi che impartisci nella
console di amministazione...