ssh

Come eseguire comandi Linux su un sistema remoto tramite SSH?

Come eseguire comandi Linux su un sistema remoto tramite SSH?

Per lavorare sul sistema remoto, prima accedi a quel sistema, esegui comandi per eseguire diverse attività e poi esci da quella sessione. Anche per eseguire un singolo comando su un sistema remoto, è necessario eseguire tutti i passaggi. Mentre si lavora fianco a fianco sui sistemi locale e remoto, è necessario passare da uno all'altro più volte. L'accesso e la disconnessione da un sistema più volte può essere fastidioso. Dovrebbe esserci un modo che ti permetta di eseguire comandi su un sistema remoto senza accedervi.Fortunatamente, c'è un modo in cui possiamo mostrarti come eseguire comandi su un sistema remoto su SSH direttamente dal tuo computer locale.

Prerequisiti

Come prerequisiti, devi avere:

Nota: i comandi menzionati in questo tutorial sono stati eseguiti su Ubuntu 20.04 Terminale LTS (Focal Fossa), che può essere aperto tramite la scorciatoia 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, nome host/indirizzo_IP è il nome host o l'indirizzo IP del sistema remoto. Il Comando/Script è il comando o lo script che vuoi eseguire sul sistema remoto.

Se SSH è in esecuzione su una porta diversa da quella predefinita, assicurati di menzionarlo utilizzando il flag -p come segue:

$ ssh -p

Esegui un 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 tra virgolette singole (") o doppie ("") in questo modo:

$ ssh [email protected] "Nome host"

Esegui più comandi sul sistema remoto

Se è necessario eseguire più comandi sul sistema remoto tramite SSH, separarli utilizzando (;) o (&&) e racchiuderli tra virgolette (""). Se non metti i comandi multipli tra virgolette, solo il primo comando verrà eseguito sulla macchina remota e gli altri comandi verranno eseguiti sulla macchina locale.

$ ssh   “comando1 && comando2”

o

$ ssh   “comando1 ; comando2”

Utilizzo del separatore &&

Se usi il separatore (&&), il secondo comando verrà eseguito solo se il primo comando viene eseguito con successo. Ad esempio, per eseguire i comandi "mkdir" e "ls" sul sistema remoto, sarà necessario immettere 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 solo sul sistema remoto se il primo comando "mkdir" ha esito positivo.


Questo comando è utile anche quando si aggiorna il sistema. In genere, un aggiornamento del sistema viene eseguito dopo un aggiornamento. Pertanto, utilizzando il comando precedente, è possibile eseguire l'aggiornamento del sistema solo se gli aggiornamenti hanno esito positivo.

Usando il ; separatore

Se usi il separatore (;), il secondo comando verrà eseguito indipendentemente dal fatto che il primo comando abbia avuto successo o meno or. Ad esempio, per eseguire i comandi "hostname" e "ip r" sul sistema remoto, sarà necessario immettere 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 va a buon fine.

Esegui comando sul sistema remoto con privilegi Sudo

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

Ad esempio, per aggiornare i repository di sistema sul sistema remoto, sarà necessario 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: qui viene utilizzata l'opzione -t per allocare forzatamente tty.

Esegui il comando sul sistema remoto e salva il suo output sul sistema locale

L'output dei comandi eseguiti sui sistemi remoti può essere salvato anche sul 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

Esegui script locale sul sistema remoto

Lo script posizionato sul sistema locale può essere eseguito anche sul sistema remoto. Spieghiamolo creando uno script chiamato sample.sh nel sistema locale.

$ sudo nano campione.sh

Aggiungi sotto le righe nel file di script:

#!/bin/bash
Data
Nome host
ip route
ping -c 3 google.come

Ora salva e chiudi lo script.


Ora, per eseguire l'esempio di script.sh sul sistema remoto, emettere il comando seguente in Terminale:

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

Ecco l'output dopo l'esecuzione dello script su un sistema remoto:


Questo è tutto quello che c'è da fare! In questo tutorial, ti abbiamo mostrato come eseguire comandi su un sistema remoto su SSH. Rende molto facile lavorare sul sistema remoto e ti salva anche dal fastidio di accedere e uscire dal sistema remoto più volte.

Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...
Come aumentare gli FPS in Linux?
FPS sta per Fotogrammi al secondo. Il compito dell'FPS è misurare il frame rate nelle riproduzioni video o nelle prestazioni di gioco game. In parole ...
I migliori giochi di laboratorio dell'app Oculus
Se possiedi un visore Oculus, devi essere informato sul sideloading. Il sideloading è il processo di installazione di contenuti non archiviati sul vis...