2013-08-01 26 views
5

Ho uno script locale che non verrà eseguito senza privilegi di root sull'host remoto. Ho modificato e permesso al file sudoers di eseguire lo script dalla directory home (/ home/nomeutente/script). Lo script crea un file txt con i risultati, ma reindirizzo l'output al terminale e reindirizzo l'output a un file di testo sul computer locale.Esegui script locale su host Linux remoto

Non riesco a "ssh utente @ nomehost sudo -Sv < script.sh> results.txt" perché questo non eseguirà lo script dall'host remoto, in particolare la directory home.

Qualcuno sa di un modo (una riga) per copiare lo script sull'host remoto & eseguirlo come root durante il recupero dell'output?

Grazie per qualsiasi tipo di assistenza

risposta

2

Copiare lo script con scp, quindi eseguirlo.

scp script.sh [email protected]: 
ssh [email protected] sudo ./script.sh > results.txt 

di farlo in una sola riga:

ssh [email protected] 'cat > script.sh; chmod 755 script.sh; sudo ./script.sh' <script.sh> results.txt 

Tuttavia, questo non funzionerà se è necessario inserire una password in sudo. Tutto lo stdin di ssh verrà inserito nello script. Potrebbe esserci un modo per farlo usando Expect, ma non ho molta esperienza lì.

+0

Grazie per la pronta risposta! Le chiavi ssh non sono memorizzate quindi dovrò inserire un pswd di 14 caratteri sia quando scp'ing che ssh'ing. C'è un modo per unirlo? –

+0

Non ho bisogno di inserire una password per sudo (eseguendo lo script). Sembra che funzionerà alla grande! Inoltre, grazie mille per il tuo tempo e aiuto !! –

+0

Non è una risposta corretta alla domanda, si trattava di eseguire un comando da remoto, non di spingere alla macchina remota! – Rafareino

12

se avete sudo, sudo e ha permesso di root, allora questo funziona con un po 'meno sintassi:

ssh -T [email protected] 'sudo su -' < script.sh

+5

+1 Questa dovrebbe essere la risposta accettata. –

Problemi correlati