Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как продублировать нужное количество файлов ?  (Прочитано 5134 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Всем добрый день.
Меня интересует следующие: надо создать файлы от eth0-2:2001 до eth0-2:2100, при том, чтоб первый файл содержал следующие:

RATE=50Kbit
CEIL=1Mbit
LEAF=sfq
RULE=192.168.181.1

следующий файл :

RATE=50Kbit
CEIL=1Mbit
LEAF=sfq
RULE=192.168.181.5

и дальше в таком же порядке

RATE=50Kbit
CEIL=1Mbit
LEAF=sfq
RULE=192.168.181.n+4


Можно ли реализировать это скриптом? чтоб не создавать файлики вручную?
Спасибо.

--
автор получает оптом 2 (прописью:два) предупреждения за злостный кросс-постинг
-- kwah
« Последнее редактирование: 22 Август 2008, 15:13:14 от Kwah »

plin2s

  • Гость
можно. для этого хватит самых малейших основ програмирования + книжка по основам shell

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
можно. для этого хватит самых малейших основ програмирования + книжка по основам shell

основы программирования есть на Паскале, и то , в раннем детстве.. а здесь спросил тех, кому это раз плюнуть, и кто сможет помочь советом, как сделать, а не где найти. :coolsmiley:

Оффлайн ziv

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
#!/usr/bin/perl

$common="RATE=50Kbit
CEIL=1Mbit
LEAF=sfq
";

for($i=1; $i<=100; $i++) {
    $name="eth0-2:2".sprintf("%03d", $i);
    open FILE, ">$name";
    print FILE $common;
    $ip=4*$i-3;
    print FILE "RULE=192.168.181.".$ip."\n";
    close FILE;
}
« Последнее редактирование: 22 Август 2008, 13:04:25 от ziv »

Оффлайн picnik

  • Активист
  • *
  • Сообщений: 310
    • Просмотр профиля
#!/bin/bash

FILENUM=2001
RULEEND=1

while [ $FILENUM -lt 2101 ]
do

echo RATE=50Kbit >> ./eth0-2:$FILENUM
echo CEIL=1Mbit >> ./eth0-2:$FILENUM
echo LEAF=sfq >> ./eth0-2:$FILENUM
echo RULE=192.168.181.$RULEEND >> ./eth0-2:$FILENUM

RULEEND=`expr $RULEEND + 4`
FILENUM=`expr $FILENUM + 1`

done


Пользуйся на здоровье  :)

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
лови:

#!/bin/bash

TARGET_DIR=$1;

FILES_COUNT=100;

echo "Creating $FILES_COUNT files in $TARGET_DIR";

for ((k=1; k<=$FILES_COUNT; k++));
do
FILE_NAME=$(printf "$TARGET_DIR/eth0-2:2%03d" $k);

echo " *Creating file $FILE_NAME";

echo "RATE=50Kbit" > $FILE_NAME;
echo "CEIL=1Mbit" >> $FILE_NAME;
echo "LEAF=sfq" >> $FILE_NAME;

RULE_NUM=$((4*$k-3));
echo "RULE=192.168.181.$RULE_NUM" >> $FILE_NAME;
done

сохранить с именем, например, batch-create.sh, дать права на выполнение, использовать так:
./batch-create.sh <папка_куда_делать_файлы_без_конечного_слэша>
Последний RULE получается RULE=192.168.181.397. Это правильно? Если нет, правь формулу :)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
#!/usr/bin/perl

$common="RATE=50Kbit
CEIL=1Mbit
LEAF=sfq
";

for($i=1; $i<=100; $i++) {
    $name="eth0-2:2".sprintf("%03d", $i);
    open FILE, ">$name";
    print FILE $common;
    $ip=4*($i-1)+1;
    print FILE "RULE=192.168.1.".$ip."\n";
    close FILE;
}

Спасибо за скрипт, но можна узнать как его применить? :)
Я в этом деле делаю первый шаг. :-\

Оффлайн ziv

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Копируешь это в файл file. Делаешь
chmod +x fileЗапускаешь
./fileВуаля - в текущем каталоге твои eth0-2:2*

ЗЫ Там в айпишнике ошибка, смотри исправленный.
« Последнее редактирование: 22 Август 2008, 13:05:21 от ziv »

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Копируешь это в файл file. Делаешь
chmod +x fileЗапускаешь
./fileВуаля - в текущем каталоге твои eth0-2:2*

ЗЫ Там в айпишнике ошибка, смотри исправленный.


Спасибо.. щас сделаем.

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
афтар - инициатор конкурса "написание скриптов на скорость"?  ;D

https://forum.ubuntu.ru/index.php?topic=34289.0
https://forum.ubuntu.ru/index.php?topic=34287.0

Оффлайн ziv

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
афтар - инициатор конкурса "написание скриптов на скорость"?  ;D

https://forum.ubuntu.ru/index.php?topic=34289.0
https://forum.ubuntu.ru/index.php?topic=34287.0

Я выиграл :)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
ну как бы последний RULE должен быть RULE=192.168.181.253 , но мне надо было знать как сделать это дело :)

Щас попробую. Этот скрипт кинуть просто в файл, и проинициализировать запуск?

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Скрипт просто закинуть в текстовый редактор и запустить его?

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
:)

есть три скрипта... какой же запустить ))

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
точно так же, как и здесь:
https://forum.ubuntu.ru/index.php?topic=34288.msg243770#msg243770
:)

только мой скрипт можно сохранять куда угодно, но папку, куда сохранять файлы, надо передать параметром:
./batch-create.sh /tmp - это создасть файлы в /tmp.

 

Страница сгенерирована за 0.057 секунд. Запросов: 22.