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