środa, 4 maja 2016

Wysyłanie pliku lub katalogu do listy adresów przez scp w pythonie

Czasem świetnie byłoby robić synchroniczne wysyłanie jakiś danych do całej listy adresów - np. aby zrobić kopię danych, tak by nie zginęły, bądź np. wysłać coś na komputery każdego studenta na zajęciach ;)
Dziś dzielę się napisanym na szybko programikiem, który właśnie to robi.

Użycie:

python SCP2all.py [-r] file_or_directory [optional_path_on_host]

Dopóki nie wpiszemy opcjonalnej ścieżki, gdzie ma być dokładnie wysłany plik na samych hostach, program przyjmuje, że docelowym katalogiem jest katalog domowy użytkownika.

Kod:
#!/usr/bin/env python
# -*- coding: utf-8 -*-   
# Rafał Sarniak 4.05.2016
# SCP2all.sh ver. 1.0
# Simple python program for sending file or directory to a list of adresses.

import os, sys

lista_adresow = ['user@hostname1', 'user@hostname2', 'user@hostname3']

def main(argv):
  for adres in lista_adresow:
    komenda = "scp "
    if len(argv) == 1:
      komenda = komenda + argv[0] + ' ' + adres + ":"
    elif len(argv) == 2 :
      if argv[0] == '-r' :
        komenda = komenda + '-r ' + argv[1] + ' ' + adres + ":"
      else:
        komenda = komenda + argv[0] + ' ' + adres + ":" + argv[1]
    elif len(argv) == 3 :
       komenda = komenda + '-r ' + argv[1] + ' ' + adres + ":" + argv[3]
    else:
       print("Błąd")
       exit()
    print komenda
    retvalue = os.system( komenda )



if __name__ == "__main__":
   main(sys.argv[1:])

1 komentarz:

  1. Cześć :) Wchodzę na Twojego bloga i uderza mnie wpis o Pythonie. To tak jakby znaleźć bratnią duszę :) Zapraszam do mnie, blog w budowie, ale idzie do przodu :)

    OdpowiedzUsuń