Como executar comandos Linux no sistema remoto sobre SSH?

Como executar comandos Linux no sistema remoto sobre SSH?

Para trabalhar no sistema remoto, primeiro, você efetua login nesse sistema, executa comandos para executar tarefas diferentes e depois logout dessa sessão. Mesmo para executar um único comando em um sistema remoto, você precisa passar por todas as etapas. Enquanto trabalha nos sistemas locais e remotos lado a lado, você precisa alternar entre eles várias vezes. Faça login e saída de um sistema várias vezes pode ser irritante. Deve haver uma maneira de permitir que você execute comandos em um sistema remoto sem fazer login.Felizmente, existe uma maneira de mostrar como executar comandos em um sistema remoto sobre SSH diretamente da sua máquina local.

Pré -requisitos

Como pré -requisitos, você deve ter:

  • Máquina Ubuntu
  • Usuário com privilégios sudo

Nota: Os comandos mencionados neste tutorial foram executados no Ubuntu 20.04 LTS (fossa focal) terminal, que pode ser aberto através do atalho Ctrl+Alt+T. Os mesmos comandos também são aplicáveis ​​ao Linux Mint e Debian.

Execute os comandos Linux no sistema remoto sobre SSH

Para executar um comando em um sistema remoto do sistema local, use a seguinte sintaxe:

$ ssh

Onde nome de usuário O usuário é no sistema remoto, HostName/ip_address é o nome do host ou o endereço IP do sistema remoto. O Comando/script é o comando ou script que você deseja executar no sistema remoto.

Se o SSH estiver em execução em alguma porta que não seja a porta padrão, certifique -se de mencioná -lo usando o sinalizador -p da seguinte forma:

$ ssh -p

Execute o comando único no sistema remoto

Digamos que você precise encontrar o nome do host do sistema remoto. Nesse caso, o comando que você precisa executar no sistema local seria:

$ ssh [email protected] nome de anfitrião

Agora, você será solicitado a fornecer a senha para o usuário remoto. Digite a senha e pressione Enter.

Na saída a seguir, "MYPC" é o nome do host do sistema remoto.


Você também pode incluir o comando em um único (") ou duplo vírgulas invertidas (" ") como esta:

$ ssh [email protected] "nome de anfitrião"

Executar vários comandos no sistema remoto

Se você precisar executar vários comandos no sistema remoto sobre SSH, separe -os usando (;) ou (&&) e inclua -os em vírgulas invertidas (""). Se você não colocar os vários comandos em vírgulas invertidas, apenas o primeiro comando será executado na máquina remota e os outros comandos serão executados na máquina local.

$ ssh “Command1 && Command2”

ou

$ ssh “Command1; comando2 ”

Usando o separador &&

Se você usar o separador (&&), o segundo comando será executado apenas se o primeiro comando for executado com sucesso. Por exemplo, para executar os comandos "MKDIR" e "LS" no sistema remoto, você precisará emitir o seguinte comando no sistema local:

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

Agora, você será solicitado a fornecer a senha para o usuário remoto. Digite a senha e pressione Enter.

A seguir, a saída dos comandos executados em um sistema remoto. O segundo comando "LS" será executado apenas no sistema remoto se o primeiro comando "mkdir" for bem -sucedido.


Este comando também é útil ao atualizar o sistema. Geralmente, uma atualização do sistema é realizada após uma atualização. Portanto, usando o comando acima, você pode fazer a atualização do sistema apenas se as atualizações forem bem -sucedidas.

Usando o; separador

Se você usar o separador (;), o segundo comando será executado, independentemente de o primeiro comando ter sido bem -sucedido ou não. Por exemplo, para executar comandos "HostName" e "Ip R" no sistema remoto, você precisará emitir o seguinte comando no sistema local:

$ ssh [email protected] "nome de anfitrião ; ip r ”

Agora, você será solicitado a fornecer a senha para o usuário remoto. Digite a senha e pressione Enter.

A seguir, a saída dos comandos executados em um sistema remoto. O segundo comando "ip r" será executado mesmo que o primeiro comando não tenha êxito.

Execute o comando no sistema remoto com privilégios sudo

Alguns comandos no Linux requer privilégios elevados, como instalar ou remover qualquer software, para adicionar ou remover um usuário, alterando as configurações do sistema, etc. Quando você executa um comando nos sistemas remotos que exigem privilégios de sudo, você será solicitado pela primeira vez a senha do usuário remoto e, em seguida, será solicitado que a senha do sudo execute o comando.

Por exemplo, para atualizar os repositórios do sistema no sistema remoto, você precisará executar o seguinte comando em seu sistema local:

$ ssh -t [email protected] “Atualização de sudo apt”

A seguir, a saída do comando executado em um sistema remoto com privilégios elevados.


NOTA: Então -t a opção é usada aqui para alocar com força o TTY.

Execute o comando no sistema remoto e salve sua saída no sistema local

A saída dos comandos executados nos sistemas remotos também pode ser salva no sistema local. Por exemplo, o comando a seguir executará o comando ifconfig no sistema remoto e, em seguida, salvará sua saída em um arquivo chamado IP.txt na área de trabalho da máquina local.

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

Execute o script local no sistema remoto

O script colocado no sistema local também pode ser executado no sistema remoto. Vamos explicar isso criando um script chamado de amostra.SH no sistema local.

$ sudo nano amostra.sh

Adicione as linhas abaixo no arquivo de script:

#!/BIN/BASH
data
nome de anfitrião
rota IP
ping -c 3 google.com

Agora, salve e feche o script.


Agora, para executar a amostra de script.SH No sistema remoto, emita o comando abaixo no terminal:

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

Aqui está a saída depois que o script é executado em um sistema remoto:


Isso é tudo o que há para isso! Neste tutorial, mostramos como executar comandos em um sistema remoto sobre SSH. Isso facilita muito o trabalho no sistema remoto e também o salva do incômodo de fazer login e sair do sistema remoto várias vezes.