Forum Linux.général Disk Usage au travers de ssh

Posté par (page perso) . Licence CC by-sa.
Tags : aucun
1
17
juin
2019

Bonjour nal forum

je me sers de mini scripts pour copier des fichiers d'un ordi à l'autre, merci ssh et en général rsync. Ces scripts ont pour seule vertu de définir en dur les répertoires et puis d'invoquer disk usage en fin de course pour vérifier.

Là je voudrais comparer le répertoire source, en local, avec un répertoire cible ssh. Si rsync sait travailler avec ssh, je ne trouve pas dans le man de du quoi que ce soit. Les forums disent souvent de se connecter en ssh. Au pire mon script devra faire ça, me connecter en ssh puis invoquer du ?

  • # Passer une commande à ssh

    Posté par . Évalué à 3 (+2/-0).

    Bonjour,

    Tu peux faire ça par exemple :

    ssh user@tonautrepc 'commande_a_executer'

    • [^] # Re: Passer une commande à ssh

      Posté par . Évalué à 2 (+1/-0).

      Je devine que la réponse précédente solutionne ton problème, à un détail près : ssh demande un mot de passe, non ?
      Si oui, il faut "préparer le terrain" en générant un couple clé publique/clé privée. Dans les grandes lignes :

      • ssh-keygen pour générer les clé dans ~/.ssh
      • ssh-copy-id user@tonautrepc pour copier la clé publique sur la machine distante

      À partir de là, ssh user@tonautrepc 'commande_a_executer' ne devrait plus demander le mot de passe.

  • # Les bases

    Posté par (page perso) . Évalué à 4 (+2/-0).

    ssh te permet d'accéder à la machine distante de manière sécurisée, parce que sur la machine distante, il y a un service (sshd) qui écoute les commandes et y répond. Ce service te permet une connexion, la copie de fichier, ou encore de lancer une commande arbitraire.

    Quand tu lances du, le programme réalise des appels systèmes sur la machine où il est lancé pour faire ses calculs. C'est la même chose pour ls, bash etc.

    Par contre, tu as la possibilité de lancer, à travers ssh, la commande installée sur la machine distante : par exemple dans ton script, tu peux faire :

    du_local=$(du "${path}")
    du_remote=$(ssh user@host du "${path}")

    Si tu as plusieurs commandes à exécuter, tu peux enrober ton appel à ssh avec une syntaxe <<EOF … EOF :

    ssh $1 <<EOF
    
    function getlist {
        cd \$1 && find . -type f -exec cksum {} \\; | sort
    }
    
    comm -3 <(getlist $2) <(getlist $3) | sort -k 3,3
    EOF

    (le petit bout de script ci-dessus te permettra de faire des comparaisons entre deux répertoires distant).

  • # Pourquoi t'embeter à ce point ?

    Posté par (page perso) . Évalué à 5 (+4/-0).

    Là je voudrais comparer le répertoire source, en local, avec un répertoire cible ssh.

    c'est justement le taff de rsync, pourquoi un "du" serait plus sûr que rsync qui va checksum-er chaque fichier pour valider le contenu ?

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.