sabato 23 agosto 2008

Eseguire comandi multipli in remoto via SSH

Bisogno di utilizzare una interfaccia grafica su un server remoto; capita sovente: si tratta di esportare il display dal server alla macchina dalla quale si sta lavorando. Oggi mi e' venuto in mente di automatizzare la procedura; ecco il risultato:
  • Prende due parametri, l'host e il comando da eseguire
  • Si collega, estrae l'ip dalla variabile SSH_CLIENT e aggiunge il numero del display
  • Dopo aver collezionato quanto gli serve si connette e esegue quanto desiderato. Il secondo parametro puo' consistere di qualsiasi comando, eseguibile o puo' essere vuoto
Interessante l'uso dell'EOF, preso da uno spunto letto in rete; a questo proposito e' da segnalare una cosetta: le variabili vanno trattate nel modo giusto perche' sia possibile l'uso corretto in remoto. A questo proposito e' necessario "escaparle" perche' non vengano parsate subito e vengano passate nel modo giustoAd esempio: la terza riga dal fondo stampa a schermo il valore di DISPLAY sul server remoto. Senza il \ davanti restituirebbe il valore che ha in locale.

#!/bin/bash
HOST="$1";
COMMAND="$2";
LOGINFROM=`ssh -q $HOST env|grep SSH_CLIENT|awk '{print $1}'|cut -f2 -d"="`
REMIP="${LOGINFROM}:0"
ssh -q $HOST <<EOF
export DISPLAY=${REMIP};
echo \$DISPLAY
$COMMAND
EOF

Nessun commento:

Visite