Page 2 of 9 FirstFirst 1234 ... LastLast
Results 16 to 30 of 127

Thread: Вопросы по скриптам на bash (shell)

  1. #16
    ключевое слово awk

  2. #17
    Quote Originally Posted by mkk View Post
    Дано:
    Имеется файл, в котором записаны айпишники и названия узлов, например так:

    Требуется:
    Скрипт, который периодически просматривает системный лог и заменяет в нём эти айпишники на указанные названия из файла.

    Скрипт планирую запускать через cron.
    Если нужно, то структуру файла с названиями можно поменять.

    Подскажите как сделать?
    Или учите awk, или поставьте bash / perl / и т.д., и напишите для них.
    Неэффективный, но рабочий и простой вариант:

    Code:
    #!/bin/sh
    cat /path/to/my/host_file | while read a b ; do sed -i "s/$a/$a\[$b\]/" /path/to/log_file ; done
    Где
    /path/to/my/host_file - Ваш файл с парами(!! - без пробелов в имени!) "IP HOST",
    /path/to/log_file - лог-файл, в котором будут меняться(!) все вхождения первого слова на конструкцию "первое_слово[второе_слово]", что позволит видеть как IP, так и имя (к слову, порядок можно и поменять).
    Пример:
    Файл /tmp/my_hosts
    Code:
    210.5.162.47 SPAMMER_BOT
    После запуска
    Code:
    cat /tmp/my_hosts | while read a b ; do sed -i "s/$a/$a\[$b\]/" /tmp/syslog.log  | done
    в файле будут строки вида:
    Code:
    Jan  4 23:24:46 dropbear[267]: Child connection from ::ffff:210.5.162.47[SPAMMER_BOT]:60320
    Недостатки:
    1. Файл будет открываться для изменения столько раз, сколько строк в в Вашем файле соответствия IP<->Имя.
    2. Нет совместимых блокировок, поэтому одновременная запись syslogd и sed может привести к повреждениям файла. Как выход - работать с _копией_ файла.

  3. #18
    чтобы обойти недостаток №2 надо делать ротацию лога, потом в архивном логе заменять. Все это делать по крону.

  4. #19
    спасибо, попробую поковыряться.

  5. #20
    Кстати, на подскажите по поводу скриптов на перле и запуска их автоматом при загрузке роутера?
    Сам скрипт находится на флашке которая монтируется автоматом при загрузке стандартного ftp.
    в post-mount идет монтирование флэшки в каталог /opt и собственно запуск скрипта.
    и так, post-mount:
    ---
    #!/bin/sh
    /bin/mount -o bind,sync,noatime,rw /tmp/harddisk/opt /opt
    /tmp/harddisk/opt/bin/gdg
    ---

    монтирование, 2 строка, проходит... а вот третья судя по всему не хочет.
    содержание файла gdg:
    ---
    #!/bin/sh
    /tmp/harddisk/opt/bin/ksbc
    ---

    потом из файла ksbc запускается следующий скрипт , следующим образом:
    ---
    #!/bin/sh
    cd /tmp/harddisk/ftp_pub/ksbc
    perl ksbc1.pl
    ---

    все эти прыжки по скриптам сделаны просто для первоначальной отладки и что бы не делать постоянно flashfs***. Просто из post-mount пускаю gdg, оттуда грузится ksbc, прыгаю в катало ksbc и оттуда запускаю саму прогу на перле путем: perl ksbc1.pl

    дело в том, что если после перезагрузки роутера войти на него и просто выполнить скрипт набрав в строке post-mount, то все чудесным образом поднимается, а вот при загрузке роутера не хочет.
    Помогите кто чем может!

  6. #21
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    во всех загрузочных скриптах везде используйте полные пути к исполняемым файлам.

  7. #22
    Quote Originally Posted by al37919 View Post
    во всех загрузочных скриптах везде используйте полные пути к исполняемым файлам.
    спасибо! я как раз этим и решил заняться!
    И все получилось!
    еще раз спасибо!

  8. #23
    Join Date
    Mar 2007
    Location
    Russia
    Posts
    170

    Bash вместо sh по умолчанию для root

    Достаточно ли просто поправить /etc/passwd или нужно сделать еще какие-то действия? В сомнения вводит тот факт, что bash лежит на винте и не будет доступен, пока он не смонтируется.
    RT-N56U / Padavan FW

  9. #24
    недостаточно, нужно еще прописать все доступные шелы в файл /etc/shells, если не подключится диск будет плохо! Нужен еще один резервный суперюзер, на такой случай.

  10. #25
    Quote Originally Posted by angel_il View Post
    недостаточно, нужно еще прописать все доступные шелы в файл /etc/shells, если не подключится диск будет плохо! Нужен еще один резервный суперюзер, на такой случай.
    задавался вопросом баша, решил что опасно его руту давать.
    лучше создать ещё одного юзера (дать ему sudo).

  11. #26
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    У меня такое решение в post-mount:
    Code:
    [ -x /opt/bin/bash ] && \
        cat /etc/passwd | \
        awk -F: '$7 ~ /^\/bin\/sh$/ {
                        if (!match($1,/-safe$/)) {
                            print $1":"$2":"$3":"$4":"$5":"$6":/opt/bin/bash";
                            print $1"-safe:"$2":"$3":"$4":"$5":"$6":/bin/sh";
                        }
                        else {
                            print $0
                        }
                    }
                    $7 !~ /^\/bin\/sh$/ {
                        print $0
                    }' | \
        sort -r > /etc/passwd
    Это при обнаружении /opt/bin/bash меняет всем юзерам системы (кроме тех у кого на конце -safe) шелл /bin/sh на /opt/bin/bash попутно создавая дублирующие аккаунты с постфиксом -safe с шеллом /bin/sh.

  12. #27

    Проблема с переменными

    WL-500g Premium, прошивка 1.9.2.7-8

    Пишу в шелле echo $1 в ответ выводится пустая строка. Аналогично и для $2, $3, $4 и т.д.

    Подскажите пожалуйста, в чем может быть проблема? Куда копать? Что еще можно проверить?

  13. #28
    Join Date
    Feb 2007
    Location
    Moscow, Russia
    Posts
    3,805
    результат абсолютно правильный.
    А что, собственно, мы ожидали увидеть то ???

  14. #29
    Quote Originally Posted by al37919 View Post
    А что, собственно, мы ожидали увидеть то ???
    Я так понимаю, что в ответ я должен увидеть имена и IP адреса интерфейсов. Например $3 - имя внутреннего интерфейса, а $4 - его адрес.

    Я ошибаюсь?

  15. #30
    Quote Originally Posted by AlexeyN View Post
    Я ошибаюсь?
    однозначно, да!
    С уважением, lex.

Page 2 of 9 FirstFirst 1234 ... LastLast

Similar Threads

  1. FAQ: часто задаваемые вопросы
    By Oleg in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 56
    Last Post: 13-09-2016, 12:06
  2. Вопросы по работе IPTV (EMF & WMF)
    By theMIROn in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 119
    Last Post: 29-03-2015, 13:18
  3. Вопросы по работе PHP на роутере
    By Jekl in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 164
    Last Post: 21-10-2014, 12:45
  4. Wifi connect client bash script export.
    By aegisrtcw in forum WL-500gP Q&A
    Replies: 0
    Last Post: 25-04-2012, 05:36
  5. Вопросы по перепрошивке dir-320
    By gweri in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 344
    Last Post: 29-10-2011, 10:36

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •