Newsgroup: it.comp.os.linux.sys
Titolo: Distribuire aggiornamento di uno script ed eseguie comando sui client.

ciao a tutti.
 
Mi scuso se vi ritroverete con un post doppio, ma non so se il precedente è arivato ala lista oppure no.
 
Per farla semplice:
 
Ho un 100inaio di pc sparsi qua e la ma risultanti tutti nella stessa subnet.
 
Ogni tot si rende necessaria una revisione di uno script in esecuzione in background sui client. 
I vari client hanno in /root/.ssh/authorized_keys la chiave pubblica del server (debian) per cui l' autenticazione da server a client avviene passwordless.
 
Mi servirebbe quindi una soluzione che mi permetta di:
-depositare il file aggiornato sul server
-lanciarne la distribuzione
-per i client che hanno ottenuto l' "update" eseguire un comando che in sostanza dovrà killare il vecchio script e avviare il nuovo
-ottenere un minimo di informazioni per capire chi rimane ancora da aggiornare.
 
 
quale potrebbe essere la soluzione più pulita? rsync / expect? 
qualche idea?

quale potrebbe essere la soluzione più pulita?
 
Ah no, se vuoi roba pulita io sono la persona sbagliata :-D
 
Leonardo
 
-- 
Surstangas via akcipitr', la cxeval' fojnumas nur:
Jen vigla damo en brakum', kaj vi pensas pri forkur'?
Do li turnis sin, kaj turnis sin, kaj ekdormis sen singard';
Kaj lin apudis je l' vekigx, soldatoj kaj Barnard'.

Pensavo a qualcosa con rsync+ssh o al massimo expect...  qualcosa di pulito :-)
 

la > pulizia in cosa starebbe?

 la > pulizia in cosa starebbe?
 
nell' ottenere una gestione semplice della questione...
 
Se doveste farlo voi vedreste meglio un sistema push o pull?
 
 

 Se doveste farlo voi vedreste meglio un sistema push o pull?
 
Sara` la mia mancanza di immaginazione ma mi sembra che un sistema pull implichi che ogni singola macchina esegua uno script, mentre in quella push ne basta uno sulla macchina che esegue la distribuzione, dunque secondo te?

alla fine per ora sta funzioando così...
 
scp scripts.tar.gz root@PC-XX:/tmp
 
ssh root@PC-XX 'export DEBIAN_FRONTEND=noninteractive ; cd /tmp ; tar xvfz scripts.tar.gz ; cd scripts ; ./reconfigure.sh -f '
 
dove XX è incrementato da un ciclo for e ./reconfigure rilancia lo script...devo ancora occuparmi del feedback di quanto avviene ma provando su due o tre macchine ha funzionato alla grande...


Tu ha' avuto fortuna :-D
 
Perche' se provi a sovrascrivere uno script o un eseguibile che e' in uso,
a seconda di come gira il vento rischi anche[1] che venga fuori un
 
	Text file busy
 
e il file NON venga sovrascritto.
 
Per quello facevo il giro del fumo di uploadare un file ".new", e stoppare
il servizio esistente prima di sostituirlo.
 
Leonardo
 
[1] forse per gli script bash no, ma io non rischierei...


 qualche idea?
 
Rsync + clusterssh

Mandi! Alessandro
  In chel dì si favelave...
 
A> qualche idea?
 
A parte quanto suggerito, se la cosa si complicherà direi che sei
pronto per puppy/cfengine.
 
Se hai bisogno di cose semplici, consiglio csync2:
 
http://oss.linbit.com/csync2/
 
 
-- 
  Lettera da Marsala, solo tre righe di biglietto
  il resto l'ho pensato e non l'ho scritto.		(R. Vecchioni)

 >quale potrebbe essere la soluzione più pulita?
 
Gli script in dash sono, a mio avviso, i piu' puliti. Se vuoi una
maggiore sicurezza prova a passare il tuo script in 
http://sourceforge.net/projects/checkbaskisms/
 
ed elimina tutto quello che potrebbe sporcare.
 
Ad oggi, uno script per dash non mi ha mai tradito, anche cambiando
server e "dialetti" di unix :-P
 
Jey
-- 
Non prendere la vita troppo sul serio... non ne uscirai mai vivo
http://www.joram.it/servizi/consulente.htm
 

uhm, non conosco nessuno dei due ma potrebbe aver senso iniziare a darci un' occhiata...