Выполнения скрипта в разных директориях

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
gonya
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-10-17 12:21:12

Выполнения скрипта в разных директориях

Непрочитанное сообщение gonya » 2012-10-17 12:43:00

Доброго времени суток.

Столкнулся с проблемой - при большом количестве 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
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение kpp » 2012-10-17 13:51:48

Уточните вопрос.
нужно указать в скрипте шаг, с которым он будет менять директорию
Не понятно по каким каталогам ходить по каким не ходить?
Как вариант - получить список каталогов, и пройти по этому списку выполняя скрипт.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

gonya
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-10-17 12:21:12

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение gonya » 2012-10-17 14:17:42

kpp писал(а):Уточните вопрос.
нужно указать в скрипте шаг, с которым он будет менять директорию
Не понятно по каким каталогам ходить по каким не ходить?
Как вариант - получить список каталогов, и пройти по этому списку выполняя скрипт.
именно так и нужно.

получается такой алгоритм работы:
перечисляем родительские каталоги (/192.168.1.1/data/ , /192.168.1.2/data/, /192.168.1.3/data/)
в них скрипт ищет директории вида 27001, 27002 и т.д.
после этого выполняется команда:
./steam -command update -game cstrike -dir *поочередно подставляются найденные директории*

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение kpp » 2012-10-17 15:17:44

Примерно так, не проверял:

Код: Выделить всё

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-ом.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение kpp » 2012-10-17 15:31:06

Что-то типа такого:

Код: Выделить всё

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 {} \;
Вместо echo {} выполнение скрипта.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

gonya
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-10-17 12:21:12

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение gonya » 2012-10-17 15:37:02

создал для теста два каталога: level1 и level2. в них - 27001, 27002, 27003 (в каждом)

Код: Выделить всё

#!/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
в итоге выполняю скрипт ./test.sh и получаю вывод:

Код: Выделить всё

./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
т.е. выполняется, но для первого каталога неверно - команда выполняется в нем, а не в нужных директориях, как с level2

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение kpp » 2012-10-17 15:48:27

Вам прямо готовое решение подавай:

Код: Выделить всё

#!/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 {} \;
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

gonya
проходил мимо
Сообщения: 4
Зарегистрирован: 2012-10-17 12:21:12

Re: Выполнения скрипта в разных директориях

Непрочитанное сообщение gonya » 2012-10-17 16:28:13

kpp писал(а):Вам прямо готовое решение подавай:
я понимаю, что это азы, но даже их не знаю. что ж поделать? только начинаю открывать для себя.

спасибо, кстати, все работает как нужно