É possível executar alguns comandos SSH usando o SFTP?

0

Tendo-me não sabendo muito sobre o Ubuntu; esta é minha primeira pergunta aqui. Então me desculpe se parecer uma pergunta inválida.

Foi-me dito que é possível executar alguns comandos SSH usando o SFTP.

Se isso for possível; Quais são as listas de comandos suportados para executar o SFTP remotamente? (Comandos SSH ou emulação SSH); não o PUT, GET etc ..

O cenário que estou tentando alcançar é o seguinte:

  1. Compacte um grande número de arquivos.
  2. Upload via sFTP.
  3. Descompacte usando sFTP (se suportado); Não por SSH

Ou pelo menos se isso for possível; para vincar algum script bash e executar através do sFTP

Atualização: tenho outra questão relacionada; É possível editar um arquivo usando o SFTP? Anexar ou editar uma linha no arquivo remoto?

Dose que precisa de combatibilidade do servidor sFTP?

Por favor, conselhos e se você pode compartilhar um link para a lista completa ou leitura adicional! Obrigado

    
por wpcoder 07.11.2017 / 10:41

2 respostas

1

Você só pode executar comandos no sistema local usando SFTP. Execute help para ver quais comandos estão disponíveis:

sftp> help
Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
chgrp grp path                     Change group of file 'path' to 'grp'
chmod mode path                    Change permissions of file 'path' to 'mode'
chown own path                     Change owner of file 'path' to 'own'
df [-hi] [path]                    Display statistics for current directory or
                                   filesystem containing 'path'
exit                               Quit sftp
get [-afPpRr] remote [local]       Download file
reget [-fPpRr] remote [local]      Resume download file
reput [-fPpRr] [local] remote      Resume upload file
help                               Display this help text
lcd path                           Change local directory to 'path'
lls [ls-options [path]]            Display local directory listing
lmkdir path                        Create local directory
ln [-s] oldpath newpath            Link remote file (-s for symlink)
lpwd                               Print local working directory
ls [-1afhlnrSt] [path]             Display remote directory listing
lumask umask                       Set local umask to 'umask'
mkdir path                         Create remote directory
progress                           Toggle display of progress meter
put [-afPpRr] local [remote]       Upload file
pwd                                Display remote working directory
quit                               Quit sftp
rename oldpath newpath             Rename remote file
rm path                            Delete remote file
rmdir path                         Remove remote directory
symlink oldpath newpath            Symlink remote file
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

Como pode ser visto, não há comando SFTP que:

  • permite executar comandos no sistema remoto. Há apenas ! para comandos locais.
  • permite anexar ou editar um arquivo. Você pode pegar o arquivo, editá-lo localmente e colocá-lo de volta.

Eu não esperaria que algo assim existisse, já que um caso de uso comum para o SFTP é prender usuários e fornecer acesso a arquivos sem a capacidade de executar comandos.

Em vez de compactar, talvez use a opção -C com sftp :

 -C      Enables compression (via ssh's -C flag).
    
por muru 07.11.2017 / 11:20
0

ssh segue a seguinte estrutura:

ssh {user}@{IP} {command}

Quando você não fornece nenhum {usuário}, ele pega o usuário atual, se você não adicionar nenhum comando, ele se conecta ao sistema e mostra um prompt. Se você adicionar um comando, ele será executado. Exemplo mostrando a data do sistema remoto:

ssh 1.1.1.1 date
[email protected]'s password:
Tue Nov  7 11:17:40 CET 2017

Mais alguns exemplos ...

ssh 1.1.1.1 'df -H'
ssh 1.1.1.1 uname -mrs
ssh 1.1.1.1 lsb_release -a
 ssh 1.1.1.1 gzip /tmp/test
 [email protected]'s password:
 ssh 1.1.1.1
 $ pwd
 /tmp
 $ ls -ltr test.gz
 -rw-rw-rw- 1 rinzwind rinzwind 688 Nov  7 11:18 test.gz

E sim, você pode adicionar linhas como essa a um lote e executá-lo.

    
por Rinzwind 07.11.2017 / 11:23