Выполнения скрипта в разных директориях
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2012-10-17 12:21:12
Выполнения скрипта в разных директориях
Доброго времени суток.
Столкнулся с проблемой - при большом количестве hlds очень муторно их обновлять (т.е. это вводить команду ./steam -command update -game cstrike -dir /вот тут и менять каждый раз/)
Хотелось бы узнать - как можно автоматизировать этот процесс?
директории идут такого вида:
/data/192.168.1.1/data/27001
/data/192.168.1.1/data/27002
/data/192.168.1.1/data/27006
/data/192.168.1.2/data/27001
в теории я понимаю, что нужно указать в скрипте шаг, с которым он будет менять директорию, указать начальное и конечное значения, после выполнения в которых (27001-27006) он перейдет к следующей родительской директории (192.168.1.1 - 192.168.1.2) и т.д.
но вот знаний не хватает. подскажете решение или хотя бы где курить именно про это?)
Столкнулся с проблемой - при большом количестве hlds очень муторно их обновлять (т.е. это вводить команду ./steam -command update -game cstrike -dir /вот тут и менять каждый раз/)
Хотелось бы узнать - как можно автоматизировать этот процесс?
директории идут такого вида:
/data/192.168.1.1/data/27001
/data/192.168.1.1/data/27002
/data/192.168.1.1/data/27006
/data/192.168.1.2/data/27001
в теории я понимаю, что нужно указать в скрипте шаг, с которым он будет менять директорию, указать начальное и конечное значения, после выполнения в которых (27001-27006) он перейдет к следующей родительской директории (192.168.1.1 - 192.168.1.2) и т.д.
но вот знаний не хватает. подскажете решение или хотя бы где курить именно про это?)
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Выполнения скрипта в разных директориях
Уточните вопрос.
Как вариант - получить список каталогов, и пройти по этому списку выполняя скрипт.
Не понятно по каким каталогам ходить по каким не ходить?нужно указать в скрипте шаг, с которым он будет менять директорию
Как вариант - получить список каталогов, и пройти по этому списку выполняя скрипт.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2012-10-17 12:21:12
Re: Выполнения скрипта в разных директориях
именно так и нужно.kpp писал(а):Уточните вопрос.Не понятно по каким каталогам ходить по каким не ходить?нужно указать в скрипте шаг, с которым он будет менять директорию
Как вариант - получить список каталогов, и пройти по этому списку выполняя скрипт.
получается такой алгоритм работы:
перечисляем родительские каталоги (/192.168.1.1/data/ , /192.168.1.2/data/, /192.168.1.3/data/)
в них скрипт ищет директории вида 27001, 27002 и т.д.
после этого выполняется команда:
./steam -command update -game cstrike -dir *поочередно подставляются найденные директории*
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Выполнения скрипта в разных директориях
Примерно так, не проверял:
Нужно добавить проверку на директорию .
Можно выпендриться и сделать все одним find-ом.
Код: Выделить всё
MAIN_DIR_LIST="/192.168.1.1/data/ /192.168.1.2/data/ /192.168.1.3/data/"
for mn_dr_ls in "${MAIN_DIR_LIST}"
do
for dr_ls in ${mn_dr_ls}[0-9][0-9][0-9][0-9][0-9]
do
#./steam -command update -game cstrike -dir ${dr_ls}
# for test
echo "./steam -command update -game cstrike -dir ${dr_ls}"
done
done
Можно выпендриться и сделать все одним find-ом.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Выполнения скрипта в разных директориях
Что-то типа такого:
Вместо echo {} выполнение скрипта.
Код: Выделить всё
find /192.168.1.1/data/ /192.168.1.2/data/ /192.168.1.3/data/ -prune -type d -name "[0-9][0-9][0-9][0-9][0-9]" -exec echo {} \;
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2012-10-17 12:21:12
Re: Выполнения скрипта в разных директориях
создал для теста два каталога: level1 и level2. в них - 27001, 27002, 27003 (в каждом)
в итоге выполняю скрипт ./test.sh и получаю вывод:
т.е. выполняется, но для первого каталога неверно - команда выполняется в нем, а не в нужных директориях, как с level2
Код: Выделить всё
#!/bin/bash
MAIN_DIR_LIST="/home/servers/level1/ /home/servers/level2/"
for mn_dr_ls in "${MAIN_DIR_LIST}"
do
for dr_ls in ${mn_dr_ls}[0-9][0-9][0-9][0-9][0-9]
do
#./steam -command update -game cstrike -dir ${dr_ls}
# for test
echo "./steam -command update -game cstrike -dir ${dr_ls}"
done
done
Код: Выделить всё
./steam -command update -game cstrike -dir /home/servers/level1/
./steam -command update -game cstrike -dir /home/servers/level2/27001
./steam -command update -game cstrike -dir /home/servers/level2/27002
-
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
- Контактная информация:
Re: Выполнения скрипта в разных директориях
Вам прямо готовое решение подавай:
или
Код: Выделить всё
#!/bin/sh
MAIN_DIR_LIST="/home/servers/level1/ /home/servers/level2/"
for mn_dr_ls in ${MAIN_DIR_LIST}
do
for dr_ls in ${mn_dr_ls}[0-9][0-9][0-9][0-9][0-9]
do
[ -d "${dr_ls}" ] || continue
#./steam -command update -game cstrike -dir ${dr_ls}
# for test
echo "./steam -command update -game cstrike -dir ${dr_ls}"
done
done
Код: Выделить всё
find /home/servers/level1/ /home/servers/level2/ -depth 1 -type d -name "[0-9][0-9][0-9][0-9][0-9]" -exec echo {} \;
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2012-10-17 12:21:12
Re: Выполнения скрипта в разных директориях
я понимаю, что это азы, но даже их не знаю. что ж поделать? только начинаю открывать для себя.kpp писал(а):Вам прямо готовое решение подавай:
спасибо, кстати, все работает как нужно