Працюючи у великій компанії мене попросили скопіювати файл розміром 1 Мб на віддалені машини під управління Windows XP Pro.
Все було б добре, якби не кількість ПК, на які необхідно було копіювати файл. Їх виявилося близько 800 !. Доброю новиною було те, що на всіх ПК були ідентичні налаштування, тобто на кожному ПК був прописаний користувач з правами адміністратора і дозволений доступ до дисків по мережі. У мене є робочий ноутбук, на якому утановлена Xubuntu 10.4, його-то я і задумав використовувати, так як багато разів читав і чув про скрипти в Linux і жодного разу не доводилося писати їх самому.
Перебираючи в голові можливі варіанти я відразу відкинув на останній план варіант з монтуванням мережевого каталогу, т.к хотілося якийсь легкості і універсальності. Порадившись в IRC на каналі # ubuntu-ru, мені було запропоновано використовувати smbclient. Як я і вчинив.
Для початку я подивився синтаксис smbclient.
Мене цікавили параметри -U і -c. У параметрі -U передається ім'я користувача, від чийого імені будемо виконувати дії. У параметрі -c передається рядок, що складається з команд smbclient # 'а, розділених знаком ";". Погравши трохи з різними варіантами я знайшов свій варіант:
Маючи в запасі трохи часу і величезне бажання навчитися працювати зі скриптами, я почав освоювати «Bash-Scripting». Подивившись приклади я відразу для наочності виділив змінні.
У моєму випадку це:
Далі, погортавши керівництво по Баш-скриптинга, я знайшов як здійснити читання рядків з файлу, що давало мені можливість редагувати список хостів незалежно від основного скрипта:
Замість висновку на екран я підставив виконання команди smbclient з аргументами.
При виконанні цього циклу я виявив, що останній рядок з файлу зчитується, але не використовується. Через стислі терміни, я вирішив додати рядок і записати в неї довільне значення.
У підсумку я прийшов до такого варіанту, при якому аргументи передаються з змінних:
Сподіваюся цей посібник знайде свого читача і допоможе придбати перший досвід з написання Bash-Script # 'ов, як допоміг мені.