Come eseguire i comandi Linux su un sistema remoto su SSH?

Come eseguire i comandi Linux su un sistema remoto su SSH?

Per lavorare sul sistema remoto, prima, si accede a quel sistema, esegui i comandi per eseguire attività diverse e quindi logout da quella sessione. Anche per eseguire un singolo comando su un sistema remoto, è necessario passare attraverso tutti i passaggi. Mentre si lavora sui sistemi locali e remoti fianco a fianco, è necessario spostarsi tra loro più volte. Accedere e uscire da un sistema più volte può essere fastidioso. Dovrebbe esserci un modo che consente di eseguire comandi su un sistema remoto senza accedere ad esso.Fortunatamente, c'è un modo in cui possiamo mostrarti come eseguire i comandi su un sistema remoto su SSH direttamente dalla macchina locale.

Prerequisiti

Come prerequisiti, devi avere:

  • Macchina ubuntu
  • Utente con privilegi sudo

Nota: i comandi menzionati in questo tutorial sono stati eseguiti su Ubuntu 20.04 LTS (fossa focale) terminale, che può essere aperto attraverso il collegamento CTRL+Alt+T. Gli stessi comandi sono applicabili anche per Linux Mint e Debian.

Esegui comandi Linux su sistema remoto su SSH

Per eseguire un comando su un sistema remoto dal sistema locale, utilizzare la seguente sintassi:

$ ssh

Dove nome utente è l'utente sul sistema remoto, Hostname/ip_address è il nome host o l'indirizzo IP del sistema remoto. IL Comando/script è il comando o lo script che si desidera eseguire sul sistema remoto.

Se l'SSH è in esecuzione su una porta diversa dalla porta predefinita, assicurati di menzionarlo usando il flag -p come segue:

$ ssh -p

Eseguire il comando singolo sul sistema remoto

Diciamo che devi trovare il nome host del sistema remoto. In questo caso, il comando che devi eseguire sul sistema locale sarebbe:

$ ssh [email protected] Nome host

Ora ti verrà chiesto di fornire la password per l'utente remoto. Digita la password e premi Invio.

Nel seguente output, "MyPC" è il nome host del sistema remoto.


Puoi anche racchiudere il comando in un singolo (") o doppio virgola invertita (" ") in questo modo:

$ ssh [email protected] "Nome host"

Eseguire più comandi sul sistema remoto

Se è necessario eseguire più comandi sul sistema remoto su SSH, separali usando (;) o (&&) e racchiuderli in virgole invertite (""). Se non si inseriscono i comandi multipli in virgole invertite, solo il primo comando verrà eseguito sulla macchina remota e gli altri comandi verranno eseguiti sulla macchina locale.

$ ssh "Command1 && Command2"

O

$ ssh “Command1; comando2 "

Usando il separatore && separatore

Se si utilizza il separatore (&&), il secondo comando verrà eseguito solo se il primo comando viene eseguito correttamente. Ad esempio, per eseguire comandi "MKDIR" e "LS" sul sistema remoto, dovrai emettere il seguente comando sul sistema locale:

$ ssh -t [email protected] "Mkdir myfiles && ls"

Ora ti verrà chiesto di fornire la password per l'utente remoto. Digita la password e premi Invio.

Di seguito è riportato l'output dei comandi eseguiti su un sistema remoto. Il secondo comando "LS" verrà eseguito sul sistema remoto solo se il primo comando "MKDIR" ha successo.


Questo comando è utile anche quando si aggiorna il sistema. Generalmente, un aggiornamento del sistema viene eseguito dopo un aggiornamento. Pertanto, utilizzando il comando sopra, è possibile eseguire l'aggiornamento del sistema per eseguire solo se gli aggiornamenti hanno successo.

Usando il ; separatore

Se si utilizza il separatore (;), il secondo comando verrà eseguito, indipendentemente se il primo comando ha avuto successo o no. Ad esempio, per eseguire comandi "Nome host" e "IP R" sul sistema remoto, dovrai emettere il seguente comando sul sistema locale:

$ ssh [email protected] "Nome host ; IP R ”

Ora ti verrà chiesto di fornire la password per l'utente remoto. Digita la password e premi Invio.

Di seguito è riportato l'output dei comandi eseguiti su un sistema remoto. Il secondo comando "ip r" verrà eseguito anche se il primo comando non ha successo.

Esegui il comando sul sistema remoto con privilegi sudo

Alcuni comandi su Linux richiedono privilegi elevati come installare o rimuovere qualsiasi software, aggiungere o rimuovere un utente, modificare le configurazioni del sistema, ecc. Quando si esegue un comando sui sistemi remoti che richiedono privilegi sudo, ti verrà prima chiesto la password per l'utente remoto, quindi ti verrà chiesto la password sudo per eseguire il comando.

Ad esempio, per aggiornare i repository del sistema sul sistema remoto, dovrai eseguire il seguente comando sul sistema locale:

$ ssh -t [email protected] "Sudo Apt Aggiornamento"

Di seguito è riportato l'output del comando eseguito su un sistema remoto con privilegi elevati.


Nota: quindi l'opzione viene utilizzata qui per allocare con forza TTY.

Eseguire il comando sul sistema remoto e salvare l'output sul sistema locale

L'output dei comandi eseguiti sui sistemi remoti può anche essere salvato nel sistema locale. Ad esempio, il seguente comando eseguirà il comando ifconfig sul sistema remoto, quindi salverà il suo output in un file denominato IP.txt sul desktop della macchina locale.

$ ssh -t [email protected] “Ifconfig”> ~/desktop/ip.TXT

Eseguire lo script locale sul sistema remoto

Lo script inserito sul sistema locale può anche essere eseguito sul sistema remoto. Spieghiamo questo creando uno script chiamato Sample.Sh nel sistema locale.

$ sudo nano campione.sh

Aggiungi le righe sotto nel file di script:

#!/Bin/Bash
data
Nome host
Percorso IP
ping -c 3 google.com

Ora, salva e chiudi lo script.


Ora, per eseguire il campione di script.Sh sul sistema remoto, emette il comando seguente nel terminale:

$ ssh -t [email protected] 'Bash -s; < sample.sh

Ecco l'output dopo che lo script viene eseguito su un sistema remoto:


Questo è tutto ciò che c'è! In questo tutorial, ti abbiamo mostrato come eseguire i comandi su un sistema remoto su SSH. Rende molto semplice il lavoro sul sistema remoto e ti risparmia anche dalla seccatura di accedere e uscire dal sistema remoto più volte.