107 votes

Existe-t-il un moyen de faire un "ls" à distance comme "scp" fait une copie à distance ?

Y a-t-il un moyen de faire un "ls" à distance comme "scp" fait une copie à distance dans un Shell linux standard ?

2voto

Daniel Low Points 21

Les réponses ci-dessus ne tiennent pas compte du moment où vous devez ajouter un mot de passe. Pour inclure le mot de passe et le nom d'utilisateur dans une seule commande, installez sshpass .

Pour le Mac : $ brew install hudochenkov/sshpass/sshpass

Pour linux : sudo apt-get install sshpass -y

Ensuite :

$ sshpass -p your_password ssh user@hostname ls /path/to/dir/

Vous pouvez également sauvegarder les résultats :

$ sshpass -p your_password ssh user@hostname ls /path/to/dir/ > log.txt

Dans python3 :

import subprocess

cluster_login_email = 'user@hostname'
cluster_login_password = 'your_password'
path_to_files = '/path/to/dir/'

response = subprocess.run([
        'sshpass', '-p', cluster_login_password, 'ssh', cluster_login_email, 'ls',
        path_to_files], capture_output=True)

response = response.stdout.decode("utf-8").split('\n')

1voto

mightypile Points 261

Je trouve que mon utilisation la plus fréquente est de récupérer le résultat de ls, une simple liste de fichiers sans toutes les permissions, dates et autres, et de la conserver dans un fichier local.

{ ssh me@host.com "cd /dir/of/interest; ls -1f *.txt;" } > /home/me/listoffiles.txt

Vous pouvez exécuter ce que vous voulez entre les guillemets. Tous les résultats sont enregistrés dans votre fichier texte local. Ou si vous voulez exécuter un gros script méchant sur le serveur et capturer toute sa sortie, même les erreurs :

{ ssh me@host.com <script.remote.sh } > /home/me/output.log 2>/home/me/output.err

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