Jump to content

TheBB

Moderators
  • Posts

    2,410
  • Joined

  • Last visited

  • Days Won

    51

Posts posted by TheBB

  1. 18 часов назад, SySOPik сказал:

    Можно купить самый дешёвый роутер, сгородить опен-врт

    Можно ))) KN-2110

    Скрытый текст

    screen_2023-05-20_10:51:34-owrt.png

    screen_2023-05-20_10:53:22-slog.png

    screen_2023-05-20_10:54:34-dmesg.png

    ток там нет ни фильтров, ни красненько-зелёненькой раскраски )))

    А, вот, фильтры смотрелись бы неплохо, типа:

    D - debug (по умолчанию всё, как оно и есть), I - info (только информационные), W - warning (только предупреждения), E - error (только ошибки), C - critical (фих знает, м.б. опционально), с отключением "Обновлять в реальном времени" (чтоб ресурсы не жрало) и блокированием выбора неиспользуемых (защита от ССЗБ и шаловливых ручонок)

    Скрытый текст

    screen_2023-05-20_10:06:32-sl.png

     

    • Upvote 1
  2. "Кто хочет, тот ищет возможности, кто не хочет — ищет причины." (

    Нужен был лог, без захода на "морду лица" ака dashboard

    Скрытый текст
    ~ # wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show
    [
      {
        "log": {
          "2389": {
            "message": {
              "level": "Info",
              "label": "I",
              "message": "Network::Interface::Base: \"WifiMaster1/AccessPoint1\": schedule cleared. "
            },
            "timestamp": "Apr 25 18:11:45",
            "ident": "ndm",
            "id": 2389
          },
          "2390": {
            "message": {
              "level": "Info",
              "label": "I",
              "message": "Network::Interface::Wireless: \"WifiMaster1/AccessPoint1\": SSID saved. "
            },
            "timestamp": "Apr 25 18:11:45",
            "ident": "ndm",
            "id": 2390
          },
    ...

     

    знатная "портянка" выходит, надо что-то с "этим" делать

    ~ # cat /opt/usr/bin/show-log 
    #!/bin/sh
    
    wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show | \
    sed -e '2,3d;s,^\[,,;s,^\],,;s,^[[:space:]]*,,g;s,^"[[:digit:]]*":[[:space:]],,' | \
    tr -d '\n' | sed -e 's/},{/}\n{/g;s,}}}$,}\n,g'
    ~ # 
    ~ # show-log 
    {"message": {"level": "Info","label": "I","message": "Network::Interface::Base: \"WifiMaster1/AccessPoint1\": schedule cleared. "},"timestamp": "Apr 25 18:11:45","ident": "ndm","id": 2389}
    {"message": {"level": "Info","label": "I","message": "Network::Interface::Wireless: \"WifiMaster1/AccessPoint1\": SSID saved. "},"timestamp": "Apr 25 18:11:45","ident": "ndm","id": 2390}
    ...

    так куда веселей, не правда ли? но... хочется большего! (см. выше)

    да, знаю, можно натравить jq, однако, мы лёгких путей не ищем, т.к. комсомольцы без трудностей не могут )))

    Скрытый текст
    ~ # hl --help
    hl 0.14.0
    JSON log converter to human readable representation
    
    USAGE:
        hl [OPTIONS] [--] [FILE]...
    
    ARGS:
        <FILE>...    Files to process
    
    OPTIONS:
            --buffer-size <BUFFER_SIZE>                          Buffer size [env: HL_BUFFER_SIZE=] [default: "2 MiB"]
        -c                                                       Handful alias for --color=always, overrides --color option
        -C, --concurrency <CONCURRENCY>                          Number of processing threads [env: HL_CONCURRENCY=]
            --color <COLOR>                                      Color output options [env: HL_COLOR=] [default: auto] [possible values: auto, always, never]
        -e, --hide-empty-fields                                  Hide empty fields, applies for null, string, object and array fields only [env: HL_HIDE_EMPTY_FIELDS=]
        -E, --show-empty-fields                                  Show empty fields, overrides --hide-empty-fields option [env: HL_SHOW_EMPTY_FIELDS=]
        -f, --filter <FILTER>                                    Filtering by field values in one of forms [<key>=<value>, <key>~=<value>, <key>~~=<value>, <key>!=<value>, <key>!~=<value>,
                                                                 <key>!~~=<value>] where ~ denotes substring match and ~~ denotes regular expression match
        -h, --hide <HIDE>                                        Hide or unhide fields with the specified keys, prefix with ! to unhide, specify !* to unhide all
            --help                                               Print help information
            --interrupt-ignore-count <INTERRUPT_IGNORE_COUNT>    Number of interrupts to ignore, i.e. Ctrl-C (SIGINT) [env: HL_INTERRUPT_IGNORE_COUNT=] [default: 3]
        -l, --level <LEVEL>                                      Filtering by level [env: HL_LEVEL=] [possible values: error, warning, info, debug]
        -L, --local                                              Use local time zone, overrides --time-zone option
            --list-themes                                        List available themes and exit
            --max-message-size <MAX_MESSAGE_SIZE>                Maximum message size [env: HL_MAX_MESSAGE_SIZE=] [default: "64 MiB"]
        -P                                                       Handful alias for --paging=never, overrides --paging option
            --paging <PAGING>                                    Output paging options [env: HL_PAGING=] [default: auto] [possible values: auto, always, never]
        -r, --raw-fields                                         Disable unescaping and prettifying of field values
            --since <SINCE>                                      Filtering by timestamp >= the value (--time-zone and --local options are honored)
        -t, --time-format <TIME_FORMAT>                          Time format, see https://man7.org/linux/man-pages/man1/date.1.html [env: HL_TIME_FORMAT=] [default: "%b %d %T.%3N"]
            --theme <THEME>                                      Color theme [env: HL_THEME=] [default: one-dark-green]
            --until <UNTIL>                                      Filtering by timestamp <= the value (--time-zone and --local options are honored)
        -V, --version                                            Print version information
        -Z, --time-zone <TIME_ZONE>                              Time zone name, see column "TZ database name" at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones [env: HL_TIME_ZONE=]
                                                                 [default: Europe/Moscow]
    ~ # 

     

    hl_0.14.0-1_mipsel-3.4.ipk

    • Thanks 2
  3. хех...

    "слеплено на коленке"

    Скрытый текст

     

    ~ # cat /opt/usr/bin/get-log 
    #!/bin/sh
    
    wget -qO - --post-data='[{"log":{"once":true}}]' localhost:79/rci/show | \
    sed -e '2,3d;s,^\[,,;s,^\],,;s,^[[:space:]]*,,g;s,^"[[:digit:]]*":[[:space:]],,' | tr -d '\n' | \
    sed -e 's/},{/}\n{/g;s,}}}$,}\n,g' | \
    sed -e 's,^{"message":[[:space:]],,g;s!},!,!g' > /opt/var/log/$HOSTNAME-$(date +%Y_%m_%dT%H:%M).log
    ~ #
    ~ # ./hl -l error /opt/var/log/Keenetic-6065-2023_05_18T19:50.log

    screen_2023-05-18_21:02:20-hl.png

    screen_2023-05-18_21:03:34-hl.png

    ~ # ./hl -f label=W /opt/var/log/Keenetic-6065-2023_05_18T19:50.log

    screen_2023-05-18_21:06:17-hl.png

    hl - https://github.com/pamburus/hl

    • Thanks 2
  4. 46 минут назад, romanfly сказал:

    Здравствуйте, я совсем не понял что-где надо изменить.. чтоб этот патч применить. Осталось совсем чутка помочь :-)

    вопрос выходит за пределы темы, однако... заменить указанную строку и собрать пакет. или

    opkg install http://bin.entware.net/mipselsf-k3.4/test/cron_4.1-5a_mipsel-3.4.ipk

    crontabs задвинут как и в busybox`e (/opt/var/spool/cron/crontabs)

    https://github.com/Entware/rtndev/blob/master/cron/patches/300-pathnames.h.patch#L8

    --- a/cron/patches/300-pathnames.h.patch
    +++ b/cron/patches/300-pathnames.h.patch
    @@ -5,7 +5,7 @@
                             * are all relative to this directory.
                             */
     -#define CRONDIR               "/var/cron"
    -+#define CRONDIR               "/opt/var/cron"
    ++#define CRONDIR               "/opt/var/spool/cron"
      #endif
      
                            /* SPOOLDIR is where the crontabs live.
    @@ -14,7 +14,7 @@
                             * didn't exist last time around...)
                             */
     -#define SPOOL_DIR     "tabs"
    -+#define SPOOL_DIR     "crontabs"
    ++#define SPOOL_DIR     CRONDIR"/crontabs"
      
                            /* cron allow/deny file.  At least cron.deny must
                             * exist for ordinary users to run crontab.

    syslog (журнал)

    Скрытый текст
    ...
    [I] May  7 09:45:43 cron[10035]: (CRON) STARTUP (V5.0)
    [I] May  7 09:45:43 root: Started cron from .
    [I] May  7 09:46:01 cron[10051]: (tester) CMD (echo "every 1 min. usr-tester")
    [I] May  7 09:46:01 cron[10052]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:47:01 cron[10432]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:48:01 cron[10788]: (tester) CMD (echo "every 1 min. usr-tester")
    [I] May  7 09:48:01 cron[10789]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:49:01 cron[10035]: (tester) RELOAD (/opt/var/spool/cron/crontabs/tester)
    [I] May  7 09:49:01 cron[11142]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:50:01 cron[11490]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 09:50:01 cron[11491]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:51:01 cron[11805]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:52:01 cron[12077]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 09:52:01 cron[12076]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:53:01 cron[12325]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:54:01 cron[12511]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 09:54:01 cron[12510]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:55:01 cron[12731]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:56:01 cron[12852]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 09:56:01 cron[12853]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:57:01 cron[12885]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:58:01 cron[12920]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 09:58:01 cron[12921]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 09:59:01 cron[12955]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:00:01 cron[12988]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:00:01 cron[12989]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:01:01 cron[13036]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:02:01 cron[13069]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:02:01 cron[13070]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:03:01 cron[13104]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:04:01 cron[13137]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:04:01 cron[13138]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:05:01 cron[13172]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:06:01 cron[13211]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:06:01 cron[13212]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:07:01 cron[13248]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:08:01 cron[13285]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:08:01 cron[13286]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:09:01 cron[13322]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:10:01 cron[13359]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:10:01 cron[13360]: (root) CMD (echo "every 1 min. usr-root")
    [I] May  7 10:12:01 cron[13441]: Core::Syslog: last message repeated 2 times.
    [I] May  7 10:12:01 cron[13442]: (tester) CMD (echo "every 2 min. usr-tester")
    [I] May  7 10:13:01 cron[13478]: (root) CMD (echo "every 1 min. usr-root")
    ...

     

    чтоб работало с текущим, задания править надо в "/opt/etc/crontab" (или раскидывать по каталогам)

    • Upvote 1
  5. 22 часа назад, romanfly сказал:

    Как узнать почему это происходит??? 

    включить логирование и изучать логи

    22 часа назад, romanfly сказал:

    Как это исправить?

    настраивать под свои нужды

    напр., сменить порт на сокет, увеличить"menory_limit" или "upload_max_filesize", ...

    • Upvote 1
  6. В 05.05.2023 в 07:17, romanfly сказал:

    сделал crontab -e

    не сработает, поздравляю - нашли баг.

    ~ # 
    ~ # strace -ffff -vvvv -e openat crontab -l
    openat(AT_FDCWD, "/opt/lib/tls/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/opt/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "crontabs/root", O_RDONLY) = -1 ENOENT (No such file or directory)
    no crontab for root
    +++ exited with 1 +++
    ~ # 

    или

    ~ # 
    ~ # strace -ffff -vvvv -e openat crontab -u root -l
    openat(AT_FDCWD, "/opt/lib/tls/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/opt/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "crontabs/root", O_RDONLY) = -1 ENOENT (No such file or directory)
    no crontab for root
    +++ exited with 1 +++
    ~ # 
    Цитата

    openat(AT_FDCWD, "crontabs/root", O_RDONLY) = -1 ENOENT (No such file or directory)

    тут https://github.com/Entware/rtndev/blob/master/cron/patches/300-pathnames.h.patch#L17

    --- a/cron/patches/300-pathnames.h.patch
    +++ b/cron/patches/300-pathnames.h.patch
    @@ -14,7 +14,7 @@
                             * didn't exist last time around...)
                             */
     -#define SPOOL_DIR     "tabs"
    -+#define SPOOL_DIR     "crontabs"
    ++#define SPOOL_DIR     CRONDIR"/crontabs"
      
                            /* cron allow/deny file.  At least cron.deny must
                             * exist for ordinary users to run crontab.
    

    на выходе (задач нет)

    ~ # strace -ffff -vvvv -e openat crontab -l
    openat(AT_FDCWD, "/opt/lib/tls/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/opt/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/var/cron/crontabs/root", O_RDONLY) = -1 ENOENT (No such file or directory)
    no crontab for root
    +++ exited with 1 +++
    ~ # 
    Цитата

    openat(AT_FDCWD, "/opt/var/cron/crontabs/root", O_RDONLY) = -1 ENOENT (No such file or directory)

    после добавления

    ~ # crontab -e
    no crontab for root - using an empty one
    crontab: installing new crontab
    ~ # 

    работает

    ~ # 
    ~ # strace -ff -vv -e openat crontab -l
    openat(AT_FDCWD, "/opt/lib/tls/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
    openat(AT_FDCWD, "/opt/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/lib/libnss_files.so.2", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
    openat(AT_FDCWD, "/opt/var/cron/crontabs/root", O_RDONLY) = 3
    # DO NOT EDIT THIS FILE - edit the master and reinstall.
    # (/tmp/crontab.XXXX8WIS60 installed on Sat May  6 14:38:46 2023)
    # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
    ### test
    SHELL=/bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
    MAILTO=""
    HOME=/
    # ---------- ---------- Default is Empty ---------- ---------- #
    */1 * * * * echo "ping-pong :)"
    +++ exited with 0 +++
    ~ # 

    в журнале

    ...
    [I] May  6 15:03:01 cron[20240]: (root) RELOAD (/opt/var/cron/crontabs/root)
    [I] May  6 15:03:01 cron[1234]: (root) CMD (echo "ping-pong :)")
    [I] May  6 15:19:01 cron[1957]: Core::Syslog: last message repeated 16 times.
    ...

    @Александр Рыжов @zyxmon

    • Upvote 1
  7. 2 часа назад, romanfly сказал:

    ну я просто установил командой opkg install cron  и все.... я даже не знаю

    работает

    ~ # cat /opt/etc/crontab 
    SHELL=/opt/bin/sh
    PATH=/opt/bin:/opt/sbin:/opt/usr/bin:/opt/usr/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
    MAILTO=""
    HOME=/opt/root
    # ---------- ---------- Default is Empty ---------- ---------- #
    #*/1 * * * * root /opt/bin/run-parts /opt/etc/cron.1min	
    #*/5 * * * * root /opt/bin/run-parts /opt/etc/cron.5mins	
    #01 * * * * root /opt/bin/run-parts /opt/etc/cron.hourly	
    #02 4 * * * root /opt/bin/run-parts /opt/etc/cron.daily	
    #22 4 * * 0 root /opt/bin/run-parts /opt/etc/cron.weekly	
    #42 4 1 * * root /opt/bin/run-parts /opt/etc/cron.monthly	
    */1 * * * * root /opt/bin/php /opt/share/www/tt-rss/update.php --feeds --quiet
    ~ # 
    ...
    [I] May  4 13:25:41 cron[17584]: (CRON) STARTUP (V5.0)
    [I] May  4 13:25:42 root: Started cron from .
    [I] May  4 13:26:01 cron[17698]: (root) CMD (/opt/bin/php /opt/share/www/tt-rss/update.php --feeds --quiet)
    [I] May  4 13:30:01 cron[17962]: Core::Syslog: last message repeated 4 times.
    ...

     

    • Upvote 1
  8. http://forums.zyxmon.org/cron

    update_daemon:

    создать файл сервиса (имя/номер произвольные, напр., "/opt/etc/init.d/S89ttrss-update") со следующим содержимым:

    #!/bin/sh
    
    ENABLED=yes
    PROCS=ttrss-update
    ARGS="--interval 300 --quiet --log /opt/var/log/ttrss-update.log"
    DESC="Tiny Tiny RSS update daemon"
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    case "$1" in
        start)
            if [ -n "$(pgrep -alf update_daemon2)" ]; then
                echo "$DESC already running."
                return 0
            elif $PROCS $ARGS; then
                echo "$DESC started."
            else
                echo "$DESC failed."
            fi
        ;;
        kill|stop)
            if [ -n "$(pgrep -alf update_daemon2)" ]; then
                kill "$(pgrep -alf update_daemon2 | cut -d' ' -f1)"
                echo "$DESC stopped."
            else
                echo "$DESC not running."
            fi
        ;;
        restart)
            return 0
        ;;
        check|status)
            if [ -n "$(pgrep -alf update_daemon2)" ]; then
                echo "$DESC running."
            else
                echo "$DESC not running."
            fi
        ;;
        *)
            echo "Usage: $0 {start|stop|status}"
            exit 1
        ;;
    esac
    exit 0
    

    и сделать его исполняемым `chmod +x /opt/etc/init.d/S89ttrss-update`

    interval - периодичность обновления (по умолчанию - 120 сек.)

    log - файл лога (можно нинужно)

    DESC - описание

    PROCS - файл-обвязка для запуска php-скрипта (см. ниже)

    создать файл скрипта (имя произвольные, напр., "/opt/sbin/ttrss-update", его указать в PROCS (см. выше)) со следующим содержимым:

    #!/bin/sh
    
    exec /opt/bin/php /opt/share/www/tt-rss/update_daemon2.php "$@" &
    

    и сделать его исполняемым `chmod +x /opt/sbin/ttrss-update`

    exec /путь/к/бинарнику /путь/к/скрипту параметры_запуска в_фон

    ---

    "вариации на тему..."

    1 вместо скрипта-обвязки создать симлинк и переделать стартовый скрипт (добавить уход в фон)

    2 вместо всего, что выше, добавить в PATH путь до каталога со скриптами (/opt/share/www-tt-rss) и переделать стартовый скрипт (добавить уход в фон)

    3 вместо update_daemon.php использовать update.php с ключом --daemon, переписав стартовый скрипт

    ...

    N добавить свой вариант

    • Upvote 1
  9. 1 час назад, romanfly сказал:

    Прочитал на форуме ttrss

    Доброго!

    жалобы на root`a мы вырубили (эт про безопасность), если надо по "шен-фуй" - нужно настраивать юзверей и права доступа, организовать запуск демонов от их имени, ... (усложнять установку и настройку?). там же, 2 варианта обновления лент - или cron+update.php, или демон update_daemon2.php (без cron`a).

    терь о cron`e - какой из двух используется? апплет busybox`a или vixie cron (древний, аки окаменелые какахи мамонта)? будем моделировать/воспроизводить.

    • Upvote 1
  10. 18 минут назад, romanfly сказал:

    К сожалению ни один не сработал...

    может ленту разобрать не выходит, может лента без обновлений, может...

    добавьте канал https://forum.keenetic.com/forum/26-changelog/#

    проверьте в терминале `/opt/share/www/tt-rss/update.php  --feeds`

    /opt # /opt/share/www/tt-rss/update.php --feeds
    [16:26:10/503] Lock: update.lock
    [16:26:10/503] Scheduled 1 feeds to update...
    [16:26:10/503] Base feed: https://forum.keenetic.com/forum/26-changelog.xml/
    [16:26:10/503] => Changelog Latest Topics (ID: 5, U: admin [1]), last updated: never
    [16:26:11/505] Lock: update_daemon-feed-5.lock
    [16:26:14/503] <= 3.6718 (sec) exit code: 0
    [16:26:14/503] Processed 1 feeds in 3.6792 (sec), 3.6792 (sec/feed avg)
    [16:26:14/503] Running housekeeping tasks for user 1...
    [16:26:14/503] Sending digests, batch of max 15 users, headline limit = 1000
    [16:26:14/503] All done.
    [16:26:14/503] Expired cache/export: removed 0 files.
    [16:26:14/503] Expired cache/feeds: removed 0 files.
    [16:26:14/503] Expired cache/images: removed 0 files.
    [16:26:14/503] Expired cache/upload: removed 0 files.
    [16:26:14/503] Removed 0 old lock files.
    [16:26:14/503] Removing old error log entries...
    [16:26:14/503] Purged 0 orphaned posts.
    /opt #

    должны появиться 2 записи (Changelog 4.0 и Changelog 3.9)

    29 минут назад, romanfly сказал:

    Можно как то другим путем? ну через S89ttrss? Только как это сделать??

    создать файлы, наполнить содержимым, сделать исполняемыми (задать права: chmod +x /path/to/file, где /path/to/file - путь к файлу)

  11. 11 минуту назад, romanfly сказал:

    */30 * * * * /opt/bin/php8-cgi /opt/share/www/tt-rss/update_daemon2.php --feeds --quiet

    не знает он (скрипт, кстати - исполняемый) такого, для другого он предназначен

    /opt # 
    /opt # /opt/share/www/tt-rss/update_daemon2.php --help
    Tiny Tiny RSS update daemon.
    
    Options:
      --log FILE           - log messages to FILE
      --log-level N        - log verbosity level
      --tasks N            - amount of update tasks to spawn
                             default: 2
      --interval N         - task spawn interval
                             default: 120 seconds.
      --quiet              - don't output messages to stdout
    /opt # 

    и не php8-cgi, php-cli (если нет симлинка php).

    Другой нужОн

    /opt # /opt/share/www/tt-rss/update.php --help
    Tiny Tiny RSS CLI management tool
    =================================
    Options:
    
      --feeds                                          update all pending feeds
      --daemon                                         start single-process update daemon
      --send-digests                                   send pending email digests
      --cleanup-tags                                   perform maintenance on tags table
      --quiet                                          don't output messages to stdout
      --log FILE                                       log messages to FILE
      --log-level N                                    set log verbosity level (0-2)
      --update-schema: [force-yes]                     update database schema, optionally without prompting
      --force-update                                   mark all feeds as pending update
      --gen-search-idx                                 generate basic PostgreSQL fulltext search index
      --plugins-list                                   list installed plugins
      --debug-feed N                                   update specified feed with debug output enabled
      --force-refetch                                  debug update: force refetch feed data
      --force-rehash                                   debug update: force rehash articles
      --opml-export USER:FILE                          export OPML of USER to FILE
      --opml-import USER:FILE                          import OPML for USER from FILE
      --user-list                                      list all users
      --user-add USER[:PASSWORD[:ACCESS_LEVEL=0]]      add USER, prompts for password if unset
      --user-remove USERNAME                           remove USER
      --user-check-password USER:PASSWORD              returns 0 if user has specified PASSWORD
      --user-set-password USER:PASSWORD                sets PASSWORD of specified USER
      --user-set-access-level USER:LEVEL               sets access LEVEL of specified USER
      --user-exists USER                               returns 0 if specified USER exists in the database
      --force-yes                                      assume 'yes' to all queries
    /opt #

    собсна, для крона м.б. так

    */30 * * * * /opt/share/www/tt-rss/update.php --feeds --quiet

    или

    */30 * * * * /opt/bin/php-cli /opt/share/www/tt-rss/update.php --feeds --quiet

    или

    */30 * * * * /opt/bin/php /opt/share/www/tt-rss/update.php --feeds --quiet

     

    • Upvote 1
  12. 6 минут назад, romanfly сказал:

    Знаете, я вписал внешний белый адрес и заработало... Конечно это видимо не правильно, но работает...

    тут, однозначно, пасс - зачем он берёт внешний и не видит внутренний, надо ковырять настройки устройства...

    • Upvote 1
  13. 20 минут назад, romanfly сказал:

    осталась такая на красном фоне

     IP адрес в дом. сети какой? У меня он тож не 192.168.1.1, а другой (условно - 192.168.2.3), его и вписываем в конфиг (tt-rss/config.php).

    Цитата
    Please set SELF_URL_PATH to the correct value detected for your server: http://192.168.2.3:81/tt-rss (you're using: http://192.168.1.1:81/tt-rss)

     

    • Upvote 1
  14. nginx:

    opkg install nginx

    php8:

    opkg install php8 php8-cgi php8-cli php8-fastcgi php8-mod-curl php8-mod-dom php8-mod-fileinfo php8-mod-filter php8-mod-gd php8-mod-intl php8-mod-mbstring php8-mod-mysqli php8-mod-mysqlnd php8-mod-opcache php8-mod-openssl php8-mod-pcntl php8-mod-pdo php8-mod-pdo-mysql php8-mod-session php8-mod-xml php8-mod-xmlreader php8-mod-xmlwriter

    mariadb:

    opkg install mariadb-client mariadb-server mariadb-server-base

    tt-rss: доставить на устройство любым доступным способом, напр., git

    opkg install git-http
    git clone https://git.tt-rss.org/fox/tt-rss.git /opt/share/www/tt-rss

    минимальная (базовая) настройка:

    установить БД:

    mysql_install_db

    запустить сервис:

    /opt/etc/init.d/S70mysqld start

    подключиться и создать БД tt-rss:

    mysqladmin -u root password "passwd"
    mysql -u root -p
    create database ttrss;
    \q

    сервер (nginx):

    user  nobody;
    worker_processes  1;
    
    events {
       worker_connections  64;
    }
    
    http {
       include       mime.types;
       default_type  application/octet-stream;
    
       sendfile        on;
    
       keepalive_timeout  65;
    
       server {
           listen       81;
           server_name  localhost;
    
           location / {
               root   /opt/share/www;
               index  index.php index.html index.htm;
           }
    
           error_page   500 502 503 504  /50x.html;
           location = /50x.html {
               root   /opt/share/nginx/html;
           }
    
           location ~ \.php$ {
               root           /opt/share/www;
               #fastcgi_pass   unix:/opt/var/run/php-fcgi.sock;
               fastcgi_pass   127.0.0.1:9000;
               fastcgi_index  index.php;
               include        fastcgi_params;
           }
       }
    }
    

    порт: свой, любой, свободный

    исправить "/opt/etc/nginx/fastcgi_params" (см. в теме)

    php (fastcgi): либо через порт (оставить, как есть), либо через сокет, заменить  строку:

    fastcgi_pass   127.0.0.1:9000;

    на:

    fastcgi_pass   unix:/opt/var/run/php-fcgi.sock;

    исправить конфиг "/opt/etc/php8/php8-fastcgi" (см. ниже)

    php8-fastcgi: либо через порт (оставить, как есть), либо через сокет, заменить строку:

    BIND="127.0.0.1:9000"

    на:

    BIND="/opt/var/run/php-fcgi.sock"

    создать симлинк:

    ln -sf /opt/bin/php-cli /opt/bin/php

    исправить путь к бинарнику:

    find /opt/share/www/tt-rss -type f -exec sed -i -e 's,^#!.*php,#!/opt/bin/php,' {} +
    find /opt/share/www/tt-rss -type f -exec sed -i -e 's,/usr/bin/php,/opt/bin/php,g' {} +

    вырубить жалобу на root`a:

    sed -i -e 's,posix_getuid() == 0,posix_getuid() == -1,' /opt/share/www/tt-rss/classes/config.php

    заделать конфиг tt-rss:

    cp /opt/share/www/tt-rss/config.php-dist /opt/share/www/tt-rss/config.php

    добавить в файл "/opt/share/www/tt-rss/config.php" (по параметрам, см. "вику" https://tt-rss.org/wiki.php)

    putenv('TTRSS_DB_TYPE=mysql');
    putenv('TTRSS_DB_HOST=localhost');
    putenv('TTRSS_DB_PORT=3306');
    putenv('TTRSS_DB_USER=root');
    putenv('TTRSS_DB_NAME=ttrss');
    putenv('TTRSS_DB_PASS=passwd');
    putenv('TTRSS_SELF_URL_PATH=http://192.168.1.1:81/tt-rss');
    define('LEGACY_CONSTANT', 'value');

    импортировать схему БД:

    php /opt/share/www/tt-rss/update.php --update-schema force-yes

    (пере)запустить S70mysqld S79php8-fastcgi S80nginx

    отправляться на IP:ADD:RE:SS:81/tt-rss устройства терзать настройки... по умолчанию: логин - admin, пароль - password

    обновление подписок (cron - см. в теме) или...

    дальше лепим, кто во что горазд, типа:

    Скрытый текст
    /opt # 
    /opt # cat /opt/etc/init.d/S89ttrss 
    #!/bin/sh
    
    ENABLED=yes
    PROCS=ttrss-update
    ARGS="--interval 300 --quiet --log /opt/var/log/ttrss-update.log"
    DESC="Tiny Tiny RSS update daemon"
    PATH=/opt/sbin:/opt/bin:/opt/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    case "$1" in
        start)
            if [ -n "$(pgrep -alf update_daemon2)" ]; then
                echo "$DESC already running."
                return 0
            elif $PROCS $ARGS; then
                echo "$DESC started."
            else
                echo "$DESC failed."
            fi
        ;;
        kill|stop)
            if [ -n "$(pgrep -alf update_daemon2)" ]; then
                kill "$(pgrep -alf update_daemon2 | cut -d' ' -f1)"
                echo "$DESC stopped."
            else
                echo "$DESC not running."
            fi
        ;;
        restart)
            return 0
        ;;
        check|status)
            if [ -n "$(pgrep -alf update_daemon2)" ]; then
                echo "$DESC running."
            else
                echo "$DESC not running."
            fi
        ;;
        *)
            echo "Usage: $0 {start|stop|status}"
            exit 1
        ;;
    esac
    exit 0
    /opt # 
    /opt # cat /opt/bin/ttrss-update 
    #!/bin/sh
    
    exec /opt/bin/php /opt/share/www/tt-rss/update_daemon2.php "$@" &
    /opt #

     

    /opt # 
    /opt # /opt/etc/init.d/S89ttrss check
    Tiny Tiny RSS update daemon running.
    /opt #
    /opt # /opt/etc/init.d/S89ttrss start
    Tiny Tiny RSS update daemon already running.
    /opt #

    ---

    адреса, явки, пароли вписываем свои )))

    • Upvote 1
  15. В 30.04.2023 в 18:57, romanfly сказал:

    Можно что то сделать?

    читать "викуську" - https://tt-rss.org/wiki.php (конфиг - https://tt-rss.org/wiki/GlobalConfig)

    6 часов назад, romanfly сказал:

    Где можно найти php8? чтоб поправить ссылку?

    нигде. создать симлинк на php-cli `ln -sf /opt/bin/php-cli /opt/bin/php`

    • Thanks 1
×
×
  • Create New...