Скрипт Openwrt - Автозапуск Shadowsocks - PullRequest
0 голосов
/ 16 декабря 2018

Я хотел бы создать скрипт для openwrt, который каждый день меняет некоторые переменные внутри сервиса Shadowsocks.Это сценарий, но я не знаю, куда его поместить или как его вызывать каждый день или каждую перезагрузку маршрутизатора.

#!/bin/sh /etc/rc.common

restart=0
for i in `uci show shadowsocks | grep alias | sed -r 's/.*\[(.*)\].*/\1/'`
do
    server=$(uci get shadowsocks.@servers[${i}].alias)
    result=$(nslookup $server)

    new_ip=$(echo "${result}" | tail -n +3 | awk -F" " '/^Address 1/{ print $3}')
    if [ -n "$new_ip" ]; then
        logger -t shadowsocks "nslookup $server -> $new_ip"
        old_ip=$(uci get shadowsocks.@servers[${i}].server)
        if [ "$old_ip" != "$new_ip" ]; then
            logger -t shadowsocks "detect $server ip address change ($old_ip -> $new_ip)"
            restart=1
            uci set shadowsocks.@servers[${i}].server=${new_ip}
        fi
    else
        logger -t shadowsocks "nslookup $server fail"
    fi
done

if [ $restart -eq 1 ]; then
    logger -t shadowsocks "restart for server ip address change"
        uci commit shadowsocks
    /etc/init.d/shadowsocks restart
fi

1 Ответ

0 голосов
/ 28 декабря 2018

Вы можете использовать утилиту cron .Cron - это временный планировщик заданий в Unix-подобных компьютерных ОС.Это позволяет запускать задания / программы / скрипты в указанное время.

OpenWrt поставляется с системой cron по умолчанию, предоставляемой busybox.

Cron не включен по умолчанию, поэтому ваши задания не будут выполняться.Чтобы активировать cron в Openwrt:

/etc/init.d/cron start
/etc/init.d/cron enable

Ref: https://oldwiki.archive.openwrt.org/doc/howto/cron

Теперь рассмотрим ваш вопрос, если вы хотите запускать упомянутый скрипт каждый день:

Редактировать файл cronиспользуя команду crontab -e.И напишите ниже строку.

0 0 * * * sh /path/to/your/script.sh

Эта команда запустит ваш скрипт в 00:00 (каждый день в полночь).Вы можете легко изменить вышеуказанную команду, чтобы запланировать свою работу в любое другое время.Полезная ссылка для создания записи о задании cron: https://crontab.guru/

Чтобы узнать, работает ли crontab правильно:

tail -f /var/log/syslog | grep CRON

Теперь перейдем ко второму вопросу " Запускать скрипт при каждой перезагрузкеrouter":

Вы можете поместить свой скрипт в / etc / rc.local .Этот файл будет выполняться как скрипт оболочки при каждой загрузке с помощью /etc/rc.d/S95done в Openwrt.Так что просто отредактируйте /etc/rc.local с помощью sh /path/to/your/script.sh Убедитесь, что ваш скрипт исполняемый и правильно выполняет свою задачу.

...