web-dev-qa-db-fra.com

Est-il possible d'exécuter certaines commandes SSH en utilisant SFTP?

Ne pas en savoir beaucoup sur Ubuntu; C'est ma première question ici. Alors excusez-moi si cela semble une question invalide.

On m'a dit que il est possible d'en exécuter quelques-unes commandes SSH utilisant SFTP.

Si c'est possible Quelles sont la liste des commandes prises en charge à exécuter via SFTP à distance? (Commandes SSH ou émulation SSH); pas le PUT, GET etc ..

Le scénario que j'essaie de réaliser est le suivant:

  1. Compressez un grand nombre de fichiers.
  2. Télécharger via sFTP.
  3. Décompressez à l'aide de sFTP (si pris en charge); Pas par SSH

Ou du moins si c'est possible; créer des scripts bash et exécuter sFTP

Mise à jour: J'ai une autre question connexe; Est-il possible de modifier un fichier en utilisant SFTP? Ajouter ou modifier une ligne dans un fichier distant?

Une dose qui nécessite une capacité de combat sur le serveur sFTP?

S'il vous plaît des conseils et si vous pouvez partager un lien vers la liste complète ou des lectures supplémentaires! Je vous remercie

1
wpcoder

Vous pouvez uniquement exécuter des commandes sur le système local à l'aide de SFTP. Exécutez help pour voir quelles commandes sont disponibles:

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

Comme on peut le constater, aucune commande SFTP ne permet de:

  • permet d'exécuter des commandes sur le système distant. Il n'y a que ! pour les commandes locales.
  • permet d'ajouter ou de modifier un fichier. Vous pouvez obtenir le fichier, le modifier localement et le remettre en place.

Je ne m'attendrais pas à ce qu'un tel phénomène existe, puisqu'un cas d'utilisation courant de SFTP consiste à emprisonner les utilisateurs et à fournir un accès aux fichiers sans possibilité d'exécuter de commande.

Au lieu de compresser, utilisez peut-être l'option -C avec sftp:

 -C      Enables compression (via ssh's -C flag).
1
muru

ssh suit la structure suivante:

ssh {user}@{IP} {command}

Lorsque vous ne fournissez pas {utilisateur}, l'utilisateur actuel est pris. Si vous ajoutez aucune commande, il se connecte au système et vous affiche une invite. Si vous ajoutez une commande, elle l'exécutera. Exemple montrant la date du système distant:

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

Quelques exemples supplémentaires ...

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

Et oui, vous pouvez ajouter de telles lignes à un lot et le faire exécuter par ce script.

0
Rinzwind