2 votes

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

N'ayant pas beaucoup de connaissances sur Ubuntu, c'est ma première question ici. Alors excusez-moi si ma question ne semble pas valide.

On m'a dit que il est possible d'exécuter des Commandes SSH en utilisant SFTP.

Si cela est possible, quelle est la liste des commandes supportées pour exécuter SFTP à distance ? (commandes SSH ou émulation SSH) ; pas les PUT, GET etc.

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

  1. Zippez un grand nombre de fichiers.
  2. Télécharger par sFTP.
  3. Dézipper en utilisant sFTP (si supporté) ; Pas par SSH

Ou du moins, si c'est possible, de créer un script bash script et de l'exécuter via sFTP.

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

Est-ce que cela nécessite la combativité d'un serveur sFTP ?

N'hésitez pas à donner votre avis et, si vous le pouvez, à partager un lien vers la liste complète ou d'autres lectures ! Merci à vous

2voto

muru Points 180007

Vous pouvez uniquement exécuter des commandes sur le système local en utilisant SFTP. Exécuter 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 voir, il n'y a pas de commande SFTP :

  • 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 récupérer le fichier, le modifier localement et le remettre en place.

Je ne m'attendrais pas à ce que quelque chose de ce genre existe, étant donné qu'un cas d'utilisation commun pour SFTP est d'emprisonner les utilisateurs et de fournir un accès aux fichiers sans pouvoir exécuter de commandes.

Au lieu d'utiliser la fermeture à glissière, on peut utiliser le -C avec l'option sftp :

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

0voto

Rinzwind Points 270388

Ssh suit la structure suivante :

ssh {user}@{IP} {command}

Si vous ne fournissez pas de {user}, il prend l'utilisateur actuel, si vous n'ajoutez pas de commande, il se connecte au système et vous montre une invite. Si vous ajoutez une commande, elle sera exécutée. Exemple montrant la date du système distant :

ssh 1.1.1.1 date
rinzwind@1.1.1.1's password:
Tue Nov  7 11:17:40 CET 2017

Quelques autres exemples...

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
 rinzwind@1.1.1.1'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 des lignes comme ça à un lot, et lui faire exécuter ce script.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X