HOW-TO: Скрипт для копирования файлов по сети Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:howto:script_to_copy_files_hawe_to_remote_pc [2010/08/03 17:16]
wiki:howto:script_to_copy_files_hawe_to_remote_pc [2014/12/03 23:41] (текущий)
Строка 1: Строка 1:
-====== HOW-TO: Создание скрипта для копирования файлов по сети ======+====== HOW-TO: Скрипт для копирования файлов по сети ======
 Работая в большой компании меня попросили скопировать файл размером 1Мб на удаленные машины под управление Windows XP Pro. Работая в большой компании меня попросили скопировать файл размером 1Мб на удаленные машины под управление Windows XP Pro.
  
Строка 16: Строка 16:
 Для начала я посмотрел синтаксис **smbclient**. Для начала я посмотрел синтаксис **smbclient**.
  
-<code>+<PHP>
 # smbclient # smbclient
 Использование:​ smbclient [-?​EgBVNkPe] [-?|--help] [--usage] Использование:​ smbclient [-?​EgBVNkPe] [-?|--help] [--usage]
Строка 32: Строка 32:
         [-S|--signing=on|off|required] [-P|--machine-pass] [-e|--encrypt]         [-S|--signing=on|off|required] [-P|--machine-pass] [-e|--encrypt]
         service <​password>​         service <​password>​
-</code>+</PHP>
  
 Меня интересовали параметры **-U** и **-c**. Меня интересовали параметры **-U** и **-c**.
Строка 38: Строка 38:
 В параметре -c передается строка,​ состоящая из команд smbclient'​а,​ разделенных знаком ";"​. В параметре -c передается строка,​ состоящая из команд smbclient'​а,​ разделенных знаком ";"​.
 Поиграв немного с различными вариантами я нашел свой вариант:​ Поиграв немного с различными вариантами я нашел свой вариант:​
-<code>+<PHP>
 smbclient //<IP ПК>/​D$/​ <​пароль>​ -U <​пользователь>​ -c 'cd Data; put test.rar; exit' smbclient //<IP ПК>/​D$/​ <​пароль>​ -U <​пользователь>​ -c 'cd Data; put test.rar; exit'
-</code>+</PHP>
  
 После тестирования на 2-3 удаленных ПК я озадачился мыслью:​ "​Как же имея список IP адресов в текстовом файле я буду подставлять значения в терминал?"​. После тестирования на 2-3 удаленных ПК я озадачился мыслью:​ "​Как же имея список IP адресов в текстовом файле я буду подставлять значения в терминал?"​.
Строка 51: Строка 51:
  
 В моем случае это: В моем случае это:
-<code>+<PHP>
 cmdline1='​cd Data; put test.rar; exit' cmdline1='​cd Data; put test.rar; exit'
 share_drive='​D$'​ #​диск на удаленной машине share_drive='​D$'​ #​диск на удаленной машине
 login='​admin'​ #​логин удаленного пользователя login='​admin'​ #​логин удаленного пользователя
 pass='​password'​ #​пароль удаленного пользователя pass='​password'​ #​пароль удаленного пользователя
-</code>+</PHP>
  
 Далее, полистав руководство по Баш-Скриптингу,​ я нашел как осуществить чтение строк из файла, что давало мне возможность редактировать список хостов независимо от основного скрипта:​ Далее, полистав руководство по Баш-Скриптингу,​ я нашел как осуществить чтение строк из файла, что давало мне возможность редактировать список хостов независимо от основного скрипта:​
  
-<code>+<PHP>
 while read line #​читаем строку из файла data-file в переменную line и while read line #​читаем строку из файла data-file в переменную line и
 do              #​выводим значение переменной на экран do              #​выводим значение переменной на экран
   echo "​$line" ​   echo "​$line" ​
 done <​data-file ​ done <​data-file ​
-</code>+</PHP>
  
  
 Вместо вывода на экран я подставил выполнение команды smbclient с аргументами. Вместо вывода на экран я подставил выполнение команды smbclient с аргументами.
  
-<code>+<PHP>
 while read line #​читаем строку из файла data-file в переменную line и while read line #​читаем строку из файла data-file в переменную line и
 do              #и используем ее в скрипте. do              #и используем ее в скрипте.
   smbclient //"​$line"/​D$/​ password -U admin -c 'cd Data; put test.rar; exit'   smbclient //"​$line"/​D$/​ password -U admin -c 'cd Data; put test.rar; exit'
 done <​file_ip ​ done <​file_ip ​
-</code>+</PHP>
  
 При выполнении этого цикла я обнаружил,​ что последняя строка из файла считывается,​ но не используется. Из-за сжатых сроков,​ я решил добавить строку и записать в нее произвольное значение. При выполнении этого цикла я обнаружил,​ что последняя строка из файла считывается,​ но не используется. Из-за сжатых сроков,​ я решил добавить строку и записать в нее произвольное значение.
Строка 81: Строка 81:
 В итоге я пришел к такому варианту,​ при котором аргументы передаются из переменных:​ В итоге я пришел к такому варианту,​ при котором аргументы передаются из переменных:​
  
-<code>+<PHP>
 #!/bin/bash #!/bin/bash
 # IP брать из файла file_ip # IP брать из файла file_ip
Строка 99: Строка 99:
 done <file_ip done <file_ip
 echo "All done!..."​ echo "All done!..."​
-</code>+</PHP>
  
  
Строка 105: Строка 105:
  
 После написания данного скрипта я получил хороший инструмент для сравнительно быстрого копирования файлов по сети. После написания данного скрипта я получил хороший инструмент для сравнительно быстрого копирования файлов по сети.
-Со временем в скрипт можно добавлять различные проверки (к примеру:​ убирать дубликаты IP адресов в списке),​ добавлять команды... Список ограничевается только вашеми потребностями и фантазией.+Со временем в скрипт можно добавлять различные проверки (к примеру:​ убирать дубликаты IP адресов в списке),​ добавлять команды... Список ограничевается только вашими потребностями и фантазией.
  
 Надеюсь данное руководство найдет своего читателя и поможет приобрести первый опыт по написанию Bash-Script'​ов,​ как помог мне. Надеюсь данное руководство найдет своего читателя и поможет приобрести первый опыт по написанию Bash-Script'​ов,​ как помог мне.
  
 {{tag>​Администрирование копирование smbclient HOWTO}} {{tag>​Администрирование копирование smbclient HOWTO}}