Récupérer des fichiers depuis Linux en utilisant paramiko et scp [Python]

en premier

J'avais l'habitude d'obtenir un fichier image fixe d'un serveur fixe chaque mois et de créer régulièrement du matériel de réunion, C'était difficile de plonger dans WinSCP et de l'obtenir, j'ai donc décidé de l'automatiser avec Python.

Quand je l'ai vérifié, il semblait que je pouvais le faire en utilisant paramiko et scp, alors je l'ai essayé.

Environnement d'exploitation

Côté exécution: Windows Server 2012 Obtenu à partir de: CentOS Linux 7

Installation

Pour les terminaux connectés à Internet, un pip normal convient

py -m pip install paramiko

Si vous êtes dans un environnement hors ligne, téléchargez-le une fois, puis installez-le.

py -m pip download -d C:\tmp --no-binary :all: paramiko

Quand j'ai tapé la commande ci-dessus ERROR: Command errored out with exit status 1: J'ai eu l'erreur et je n'ai pas pu télécharger. Après avoir combattu pendant un moment

py -m pip download -d C:\tmp paramiko

J'ai pu le télécharger sur. L'option --no-binary télécharge la source, pas le binaire C'est quelque chose qui le rend moins sensible à l'environnement, mais cela ne semble pas bien fonctionner avec lui. Emportez le fichier téléchargé vers la destination d'installation et installez-le avec la commande suivante.

pip install --no-index --find-links=tmp paramiko

Je ne savais pas pourquoi je ne pouvais pas le faire de la manière habituelle, mais dans mon environnement, cela fonctionne bien avec ce qui précède.

utilisation

Tout d'abord, essayons de créer ʻimport paramiko`. Si vous ne pouvez pas, il y a un problème avec la méthode d'installation.

Code de transfert de fichier

Tout d'abord, je vais mettre le code nécessaire.

import paramiko
import scp

#Informations de connexion au serveur
host = "adresse IP"
user = "Nom d'utilisateur"
pas  = "mot de passe"

#Répertoire de sortie
out_path = r"C:\temp"

#Chemin du fichier cible
target_path = "/var/tmp/hoge.log"

#Connexion serveur
with paramiko.SSHClient() as sshc:
  sshc.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  sshc.connect(hostname=host, port=22, username=user, password=pas)

  #Traitement de copie par SCP
  with scp.SCPClient(sshc.get_transport()) as scpc:
    scpc.get(remote_path=target_path, local_path=out_path)

La description

Je n'ai pas encore essayé diverses choses, donc je ne comprends pas les détails, mais d'une manière ou d'une autre.

    scpc.get(remote_path=target_path, local_path=out_path)

Concernant les deux arguments ici, il semble que seul le type chaîne de caractères soit accepté. Convertissez un objet * Path * pratique en une chaîne avec str () etc. avant de le passer. Au fait, même si vous ne déclarez pas l'élément

scpc.get(target_path, out_path)

Cela fonctionne bien avec. Cependant, puisque cette fonction a d'autres arguments, elle est spécifiée comme une magie.

Convivialité

J'ai trouvé que c'était simple et très facile à utiliser. Dans le cas de Linux, le délimiteur de hiérarchie est / au lieu de \, il est donc facile de le combiner avec une simple chaîne de caractères. (Bien sûr, les fenêtres \ peuvent également être traitées comme une chaîne de caractères)

Dans mon cas, j'ai créé la liste de fichiers cible en boucle comme indiqué ci-dessous.

    for day in day_list:
      target_list.append(f"{port}/result{port}-{day}.png ")

Vous pouvez également exécuter des commandes avec paramiko, mais cela est résumé séparément.

Recommended Posts

Récupérer des fichiers depuis Linux en utilisant paramiko et scp [Python]
Lire et utiliser des fichiers Python à partir de Python
De Python à l'utilisation de MeCab (et CaboCha)
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Obtenez des options en Python à partir des fichiers JSON et des arguments de ligne de commande
Recevoir des e-mails de Gmail et étiqueter avec Python3
Obtenez et automatisez le contrôle ASP Datepicker à l'aide de Python et Selenium
Copier les fichiers S3 de Python vers GCS à l'aide de GSUtil
Aplatir à l'aide du rendement Python de
[python] Obtenir le quotient et le surplus
Visualisez l'activité des plantes depuis l'espace à l'aide de données satellites et de Python
Copiez récursivement les fichiers du répertoire directement sous le répertoire en utilisant Python
[Linux] Compresser les dossiers et transférer des fichiers de la télécommande vers le local
Prédire le sexe à partir du nom à l'aide de l'API Gender et de Pykakasi en Python
[Python] Extraction / combinaison de données aléatoires à partir de DataFrame en utilisant random et pandas
Tirez en accéléré à partir d'une caméra PC en utilisant Python, OpenCV
[Scp] Copiez les fichiers localement depuis un serveur Linux avec ssh scp de Tera Term
[Python] Chargement de fichiers csv à l'aide de pandas
Utilisation de Rstan de Python avec PypeR
Obtenir des données de Quandl en Python
Authentification à l'aide de l'authentification des utilisateurs tweepy et de l'authentification d'application (Python)
Remarques sur l'utilisation de MeCab depuis Python
Manipuler des fichiers et des dossiers en Python
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
À propos de Python, à partir et à l'importation, comme
Utiliser Cloud Storage depuis Python3 (Introduction)
Obtenez et définissez la valeur du menu déroulant en utilisant Python et Selenium
python Obtenez la météo à venir de l'API météo
Exécutez Ansible à partir de Python à l'aide de l'API
Obtenez des données de Twitter avec Tweepy
Précautions lors de l'utilisation de phantomjs de python
Accéder aux feuilles de calcul à partir de Python à l'aide d'OAuth 2.0
Essayez d'utiliser Amazon DynamoDB à partir de Python
Extraire des chaînes de fichiers avec Python
Lecture à partir de fichiers texte et SQLite avec Python (+ Pandas), R, Julia (+ DataFrames)
Précautions et gestion des erreurs lors de l'appel de la DLL .NET à partir de python à l'aide de pythonnet
Recevez des nouvelles de chacune des trois principales entreprises de téléphonie mobile en utilisant Django et l'API News
Obtenez et estimez la forme de la tête en utilisant Dlib et OpenCV avec python
[AWS] Utilisation de fichiers ini avec Lambda [Python]
Python> dictionnaire> values ()> Obtenir toutes les valeurs à l'aide de values ()
Obtenir le code HTML de l'élément avec du sélénium Python
Obtenez des taux de change à partir des taux de change ouverts en Python
[Note] Obtenir des données de PostgreSQL avec Python
Lire un fichier audio à partir de Python avec interruption
Obtenir l'équilibre Suica en Python (en utilisant libpafe)
Récupérer les frappes de / dev / input (python evdev)
Utilisation de Python et MeCab avec Azure Databricks
Décrypter les fichiers cryptés avec openssl depuis python avec openssl
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
Portage et modification du solveur de doublets de python2 vers python3.
Obtenez le niveau de la batterie de SwitchBot avec Python
Lire et écrire des fichiers JSON avec Python
Obtenez la probabilité de précipitation de XML avec Python
J'utilise tox et Python 3.3 avec Travis-CI
Téléchargez des fichiers dans n'importe quel format en utilisant Python
[Amazon Linux] Passage de la série Python 2 à la série Python 3
Obtenez l'adresse à partir de la latitude et de la longitude
[Python] Obtenez la couleur principale de la capture d'écran
Obtenir l'historique des métriques de MLflow en Python