OpenWrt получение внешнего ip-адреса cli

Март 18, 2025 - Время чтения: 2 минуты

Получить IP-адрес внешнего интерфейса можно командой:

ubus call network.interface.wan status | jsonfilter -e '@["ipv4-address"][0].address'

также можно получить адрес с других интерфейсов откорректировав параметр "network.interface.wan"

например для LAN:

ubus call network.interface.lan status | jsonfilter -e '@["ipv4-address"][0].address'

посмотреть список интерфейсов можно командой:

ubus list network.interface.*

Далее при необходимости полученные данные использовать для передачи во внешние скрипты, например для отправления по mqtt:

mosquitto_pub -h HOSTNAME -p 1883 -u "USERNAME" -P "PASSWD" -t 'openwrt/wan_ip' -m "$(ubus call network.interface.wan status | jsonfilter -e '@["ipv4-address"][0].address')"


systemctl алиасы для удобства просмотре статусов служб

Август 31, 2022 - Время чтения: ~1 минут

systemctl

для того чтобы каждый раз не вводить длинные команды при просмотре статусов служб в Linux добавляем в файл ~/.bashrc следующие строки

systemctl alias
alias systemctl-running='systemctl --type=service --state=running' # Список запущенных служб
alias systemctl-failed='systemctl --type=service --state failed' # Список служб со статусом failed
alias systemctl-active='systemctl  --type=service --state=active' # Список активных служб

После чего будет удобнее получать список запцущенных служб командой

systemctl-running

Linux bash перемещение по истории команд учитывая частично набранные символы

Апрель 10, 2021 - Время чтения: 2 минуты

По умолчанию нажатие клавиши "стрелка вверх" в bash выводит последнюю команду вне зависимости от того, что было  введено на данный момент. Но более удобно перемещаться по истории команд используя частично набранную команду.

Для этого нужно в файл ~/.inputrc добавить следующие команды


"\e[A": history-search-backward
"\e[B": history-search-forward

или в файл  ~/.bashrc

if [[ $- == *i* ]]
then
    bind '"\e[A": history-search-backward'
    bind '"\e[B": history-search-forward'
fi

Для подсветки строки приглашения под пользователем root (например выделить красным цветом пользователя) нужно заменить строку в файле /etc/bash.bashrc

if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

на

if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\e[0;31m\]\u\[\e[m\]@\h:\w\$ '
fi

Linux grep - вывод содержимого файла без пустых и закомментированных строк

Апрель 9, 2021 - Время чтения: ~1 минут

Иногда надо вывести содержимое конфигурационного файла, но в них часто много закоментированных строк и/или пустых строк. Чтобы не выводить эти строки можно воспользоваться командой grep

например:

cat sysctl.conf | grep -v ^# | grep -v ^$ | grep -v ^\;

либо короче

cat sysctl.conf |  grep -v -e ^# -e ^$ -e ^\;

или

cat sysctl.conf |  grep -Ev '^\s*(;|#|$)'

но все равно долго набирать такую конструкцию из скобок и спецсимволов, поэтому можно добавить alias для команды. Делается это следующим способом:

В файл ~/.bashrc добавляется строка:

alias grep-v="grep -Ev '^\s*(;|#|$)'"

после чего необходимо выполнить команду

source ~/.bashrc

либо перезайти в оболчку для применение алиаса.

После этого можно использовать алиас grep-v, например:

grep-v /etc/sysctl.conf


Доступ к удаленному рабочему столу Linux доменных пользоватлей по RDP (xRDP)

Август 10, 2020 - Время чтения: ~1 минут

При вводе Linux хоста (Ubuntu) в домен AD используя Realm и SSSD, авторизация через SSH доменными учетными записями работает корректно, но подключение по RDP используя xrdp не работает. В логах такие ошибки:

Nov  7 04:54:49 ip xrdp-sesman: pam_unix(xrdp-sesman:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=  user=rdp-user

Nov  7 04:54:49 ip xrdp-sesman: pam_sss(xrdp-sesman:auth): authentication success; logname= uid=0 euid=0 tty= ruser= rhost= user=rdp-user

Nov  7 04:54:49 ip xrdp-sesman: pam_sss(xrdp-sesman:account): Access denied for user rdp-user: 6 (Permission denied)

Добавление следующей строки к доменной части sssd.conf, исправляет эту проблему:

ad_gpo_access_control = permissive

Исходные ссылки:

https://issue.life/questions/47150283

https://stackoverflow.com/questions/47150283/ubuntu-16-active-directory-can-ssh-cannot-rdp


Nextcloud: Внутренняя ошибка сервера после аутентификации

Июнь 17, 2020 - Время чтения: ~1 минут

Использую Nextcloud в docker контейнере, и после обновления столкнулся с ошибкой: Внутренняя ошибка сервера

Решил проблему следующим образом:

Проверил и исправил права на datadirectory, путь к которому посмотреть можно в файле config.php (в моем случае:

cat /config/www/nextcloud/config/config.php | grep datadirectory 

  'datadirectory' => '/data',

chown abc:users /data/* -R

где: abc - пользователь от которого запущено nginx и php-fpm  , users - группа


далее перевел в режим обслуживания и обновил db командами

sudo -u abc php /config/www/nextcloud/occ maintenance:mode --on
sudo -u abc php /config/www/nextcloud/occ maintenance:mimetype:update-db
sudo -u abc php /config/www/nextcloud/occ maintenance:mode --off

Полу(о)умный дом

Делаем вещи умнее...

Посетителей

125