Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
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}} | ||