2017-01-19 3 views
1

J'ai la Machine-A et la Machine-B et les deux sont des serveurs Ubuntu. Maintenant, je veux lister tous les fichiers sur Machine-B en utilisant ssh. Je veux retourner le résultat dans un fichier texte afin que je puisse analyser le résultat et l'utilisation de scp pour copier les fichiers requis.Lister md5sum de fichiers sur un serveur distant à l'aide de ssh et renvoyer la sortie dans un fichier texte?

ssh [email protected] 'bash -s tree /f' 
ssh [email protected] 'bash -s ls -LR' 

Maintenant, cette commande ne donne pas le résultat que je voulais. Quelqu'un peut-il aider avec cela afin que je puisse lister tous les fichiers sur l'ordinateur distant en utilisant ssh et retourner la sortie sous la forme d'un fichier texte. J'utilise ls -LR pour lister les fichiers et SSH pour l'exécution de scripts à distance. De la réponse, j'ai travaillé sur mon problème et j'ai mis à jour la question pour correspondre à une petite exigence.

Je suis la liste des fichiers throught cette commande ssh [email protected] ls /something/sub > output.txt

Mais je veux la somme MD5 de tous les fichiers au lieu des noms parce que 2 noms de fichier peuvent obtenir match.So est-il possible de lister tous les fichiers et retourner tous md5sum de tous les fichiers et retournez dans le fichier output.txt.

+0

@Inian pas i résolu la liste et md5 est pas permis de résoudre –

+0

Il est dit pas un tel fichier existe –

+0

@Inian j'ai modifié mon script avec votre mise à jour –

Répondre

1

Copier la liste des fichiers à un chemin d'accès valide dans la machine B et copiez Retour à la machine A l'aide scp

ssh [email protected] 'ls -LR /path/to/dir > ~/fileList' 

Pour retourner le md5sum de tous les fichiers dans le répertoire, utilisez find comme

ssh [email protected] 'find /path/to/dir -type f -exec md5sum {} \; > ~/md5sum_fileList' 

maintenant, copiez le fichier sur la machine a, en utilisant un modèle glob pour copier les fichiers ayant le motif fileList

scp [email protected]:~/*fileList* [email protected]:~/ 
+0

Si vous placez '> md5sum_fileList' dans les guillemets, le fichier est créé sur l'hôte distant. D'après ce que je comprends, l'OP voulait le résultat dans l'hôte local. –

+0

@AlexisWilke: Tout à fait d'accord avec vous, OP voulait créer le fichier dans la machine distante et le recopier en local en utilisant 'scp' – Inian

1

Tout ce que vous devez faire est de spécifier la commande, sans utiliser "bash". Votre shell par défaut sera utilisé sur le périphérique distant pour exécuter la commande.

ssh remote-host command 

Pour enregistrer la sortie de votre commande ls à un fichier, vous pouvez simplement utiliser la redirection shell habituelle:

ssh remote-host command > output.txt 

Juste au cas où vous vous retrouvez avec plusieurs noms de fichiers sur une seule ligne, vous devrez peut-être utiliser -1 sur la ligne de commande ls. Aussi, rappelez-vous que si un nom de fichier inclut un espace, vous avez besoin de guillemets dans un script shell pour ...

Pour exécuter plusieurs commandes à la suite, bien que la sortie ne soit pas aussi simple à gérer, vous utilisez citations et commandes séparées avec des points-virgules (par exemple) comme dans:

ssh remote-host "command1; command2; command3" > output.txt 

en ce qui concerne md5sum, vous pouvez exécuter que contre tous les fichiers dans un répertoire en utilisant la commande find avec md5sum:

ssh remote-host "find . -type f -exec md5sum {} \;" > output.txt 

Modifier le chemin (. dans l'exemple) à tout ce qui fonctionne pour vous.

+0

Puis-je faire plusieurs commandes comme 'cd quelque chose/sub ls'. Qui passe à un autre répertoire, puis liste les fichiers? –

+1

@SaiKiran: Il suffit de passer le chemin dans le cadre de la commande, ie 's -LR/quelque chose/sub> ~/fileList' comme dans ma réponse – Inian

+0

@Inian ici j'ai plusieurs fichiers dans le dossier alors je peux passer quelque chose qui retourne md5 somme de ces fichiers 'md5sum ls/somethin/sub' –