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:
- macchina Ubuntu
- Utente con privilegi sudo
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:
$ sshDove 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 -pEsegui 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 hostOra 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:
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.
$ ssho
$ sshUtilizzo 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.shAggiungi sotto le righe nel file di script:
#!/bin/bashData
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:
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.