Автор Тема: Помощ за bash скрипт  (Прочетена 5962 пъти)

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Помощ за bash скрипт
« -: Oct 08, 2014, 18:00 »
Така идеята е следната. Имам генерирани файлове от типа:

File.20141001.102344
File.20141004.211223
File.20141007.231805

Където 8символния низ е датата а след него съответно час, минути и секунди. Искам да направя скрипт който да прави лог файл в който има запис от типа на "Този файл е генериран на "дата" и "час", като дата и час се извличат от името на файла. По мои причини не искам да използвам таймстампа на самия файл. Ще оценя всяка помощ, пък и биричка ще почерпя :)
Активен

k0tka

  • Напреднали
  • *****
  • Публикации: 130
  • Distribution: Fedora 23, CentOS, Debian, OS X El Capitan
  • Window Manager: i3wm
    • Профил
Re: Помощ за bash скрипт
« Отговор #1 -: Oct 08, 2014, 18:48 »
Просто решение...дани ти помогне:

Код:
for i in `ls`; do echo $i is created on date $(ls $i|cut -d'.' -f2) at $(ls $i|cut -d'.' -f3); done
File.20141001.102344 is created on date 20141001 at 102344
File.20141004.211223 is created on date 20141004 at 211223
File.20141007.231805 is created on date 20141007 at 231805


Ако ти върши работа ето ти и прост скрипт:

Код:
#!/bin/bash
DIR=/home/npetrov/tmp/
LOG=/home/npetrov/logfile.txt
pushd $DIR 2>&1 > /dev/null
for i in `ls`; 
do echo "$i is created on $(ls $i| cut -d'.' -f2) at $(ls $i| cut -d'.' -f3)" >> $LOG;
done
popd 2>&1 > /dev/null
« Последна редакция: Oct 08, 2014, 19:08 от k0tka »
Активен

"If you need an instructional video telling your users how to turn a machine off (http://windows.microsoft.com/en-gb/windows-8/how-shut-down-turn-off-pc), there’s something seriously wrong with your design." --  Andrew Gregory @ linuxvoice

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #2 -: Oct 08, 2014, 19:39 »
Благодаря за бързият отговор. Има ли начин да се представя часа и датата в userfriendly формат. Примерно 09/10/2014 at 10:45:34
Активен

k0tka

  • Напреднали
  • *****
  • Публикации: 130
  • Distribution: Fedora 23, CentOS, Debian, OS X El Capitan
  • Window Manager: i3wm
    • Профил
Re: Помощ за bash скрипт
« Отговор #3 -: Oct 08, 2014, 19:50 »
Единият начин е файла да се запише в по-userfriendly формат, незнам от къде го извличаш, а ако това не е опция кажи, вероятно ще ти намеря начин, но ще ми отнеме повече време да го скалъпя...
Активен

"If you need an instructional video telling your users how to turn a machine off (http://windows.microsoft.com/en-gb/windows-8/how-shut-down-turn-off-pc), there’s something seriously wrong with your design." --  Andrew Gregory @ linuxvoice

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #4 -: Oct 08, 2014, 19:59 »
Не файла не трябва да се модифицира. А поради това че е голям като размер, не е препоръчително и да се записва. Това му хрумна на тъпия ми шеф, като че ли не може да си го прочете и така от коя дата е. Както и да е каквато тъпа калинка съм се захванах да го правя и ще ти бъда много благодарен ако помогнеш да го направим както трябва. Пак казвам биричката е от мен.
Активен

koue

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: FreeBSD
  • Window Manager: fluxbox
    • Профил
Re: Помощ за bash скрипт
« Отговор #5 -: Oct 08, 2014, 21:10 »
for i in `ls File*`; do
        echo $i | sed -n "s/File\.\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\.\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/`echo $i` is created on \1\/\2\/\3 at \4:\5:\6/p"
done
Активен

Спрете да им прощавате, че не знаят какво правят!

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #6 -: Oct 08, 2014, 21:26 »
Не знам защо но не ми дава резултат в лог файла. Ето и скрипта как изглежда.

#!/bin/bash
DIR=/path/to/dir
LOG=/path/to/log/logfile.txt
pushd $DIR 2>&1 > /dev/null
for i in `ls|head -1`; do
        echo $i | sed -n "s/File\.\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\.\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/`echo $i` is created on \1\/\2\/\3 at \4:\5:\6/p" >> $LOG;
done
popd 2>&1 > /dev/null
Активен

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #7 -: Oct 08, 2014, 21:30 »
моя грешка всичко работи перфектно. благодаря за помощта. Бирата от мен.
Активен

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #8 -: Oct 10, 2014, 11:40 »
Така сега възниква въпроса как да го изпълня това за няколко сървъра от една машина? Нещо от типа:

for i in server{0..1}{0..9}
do
echo -n "${i}, "
ssh $i sudo | по-горният скрипт
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3002
    • Профил
Re: Помощ за bash скрипт
« Отговор #9 -: Oct 10, 2014, 12:08 »
Може би така ?

Execute commands simultaneously on multiple servers
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #10 -: Oct 10, 2014, 13:05 »
Може би но това не е решение. Поне за мен.
Активен

k0tka

  • Напреднали
  • *****
  • Публикации: 130
  • Distribution: Fedora 23, CentOS, Debian, OS X El Capitan
  • Window Manager: i3wm
    • Профил
Re: Помощ за bash скрипт
« Отговор #11 -: Oct 10, 2014, 13:34 »
Ще трябва да поясниш как точно искаш да го изпълниш, скрипта ще се намира ли на всяка от машините или само на тази, от която искаш да го изпълниш към останалите...има хиляди решения...крон?
Активен

"If you need an instructional video telling your users how to turn a machine off (http://windows.microsoft.com/en-gb/windows-8/how-shut-down-turn-off-pc), there’s something seriously wrong with your design." --  Andrew Gregory @ linuxvoice

Lamqta

  • Напреднали
  • *****
  • Публикации: 54
    • Профил
Re: Помощ за bash скрипт
« Отговор #12 -: Oct 10, 2014, 18:14 »
Скрипта ще се намира само на една от машините. Логва се със private key, така че не се налага парола.
Активен

k0tka

  • Напреднали
  • *****
  • Публикации: 130
  • Distribution: Fedora 23, CentOS, Debian, OS X El Capitan
  • Window Manager: i3wm
    • Профил
Re: Помощ за bash скрипт
« Отговор #13 -: Oct 10, 2014, 20:02 »
А къде ще се запазва output-а, на всяка една от машините или на машината от която се връзваш към другите?

Иначе ето ти няколко примера, които мисля че ще ти помогнат: 1 и 2
Активен

"If you need an instructional video telling your users how to turn a machine off (http://windows.microsoft.com/en-gb/windows-8/how-shut-down-turn-off-pc), there’s something seriously wrong with your design." --  Andrew Gregory @ linuxvoice

koue

  • Напреднали
  • *****
  • Публикации: 74
  • Distribution: FreeBSD
  • Window Manager: fluxbox
    • Профил
Re: Помощ за bash скрипт
« Отговор #14 -: Oct 13, 2014, 11:22 »
for server in debian ubuntu centos
do
    echo $server
    ssh $server 'ls /path/to/dir | head -1' | sed -n "s/File\.\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\.\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/`echo $i` is created on \1\/\2\/\3 at \4:\5:\6/p"
done
Активен

Спрете да им прощавате, че не знаят какво правят!

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
BASH: Как да поддържам една програма работеща
Общ форум
Regia 1 7629 Последна публикация Feb 16, 2005, 08:51
от
bash
Настройка на програми
tuxi 7 2945 Последна публикация Jun 11, 2005, 19:12
от tuxi
Моля за малко помощ за BASH
Настройка на програми
bonbon 3 1892 Последна публикация Dec 04, 2005, 16:37
от bonbon
BASH
Общ форум
Dean79 3 2058 Последна публикация Jan 13, 2006, 00:24
от Dean79
Bash присвояване на стойност от файл
Общ форум
Pulear 6 2570 Последна публикация May 21, 2006, 17:20
от Pulear