вытесняющая переменная окружения из команды

Я пытаюсь сделать обратные ssh-туннели для своих клиентов, используя выскочку. У меня много клиентов, и они, очевидно, часто бывают и выключены. Это то, что у меня есть сейчас, но это не сработает, потому что env stanza не поддерживает запуск команды.

description "Upstart Script to run sonarr as a service on Ubuntu/Debian based systems" start on runlevel [2345] stop on runlevel [016] env PORT=$(curl http://ipvr.japayton.com/port.php) env API=(sudo cat /home/kodi/IPVR/api) respawn exec autossh -nNT -i /home/root/.ssh/sshkeys -o ServerAliveInterval=15 -R $PORT:localhost:443 tunnel@ipvr.japayton.com post-start exec ssh tunnel@ipvr.japayton.com 'sqlite3 /home/client/clients.db "UPDATE clients SET port = '$PORT' WHERE api = $API;"' 

API и пост-старт не так важны. Я могу поместить это в внешний скрипт, так как я думаю, что собираюсь создать API для этих обновлений, а не использовать ssh. Port.php возвращает доступный порт для обратного туннеля.

Мне нужен этот порт во время выполнения autossh. Я знаю, что могу создать строфа скрипта и установить его как обычную переменную, но выскочка будет контролировать PID curl вместо autossh. Я не знаю, будет ли работать с внешним скриптом bash. Я хочу избегать писать что-либо в файловую систему.

One Solution collect form web for “вытесняющая переменная окружения из команды”

Я так не думаю. Похоже, что большая часть этого может (или должна) быть разбита на свой собственный сценарий, так что ваш выскочка выглядит так:

 description "Upstart Script to run sonarr as a service on Ubuntu/Debian based systems" start on runlevel [2345] stop on runlevel [016] exec /usr/local/sbin/sonarr 

И /usr/local/sbin/sonarr :

 #!/bin/sh PORT=$(curl http://ipvr.japayton.com/port.php) API=$(cat /home/kodi/IPVR/api) # Do this first because it's non-blocking # And take care with quotes. ssh tunnel@ipvr.japayton.com 'sqlite3 /home/client/clients.db "UPDATE clients SET port = '"'$PORT'"' WHERE api = '"'$API'"';"' autossh -nNT -i /home/root/.ssh/sshkeys -o ServerAliveInterval=15 -R $PORT:localhost:443 tunnel@ipvr.japayton.com 

Обратите внимание, что в скрипте было несколько проблем с синтаксисом, поэтому убедитесь, что вы запустили это, прежде чем начинать обвинять Upstart в том, что он не запускает его.

  • Развертывание проекта выскочки на системной машине с Capistrano
  • systemd недооценивает время загрузки. Как я могу попробовать выскочить?
  • Есть ли способ разработки сценариев выскочки на Fedora 21?
  • Автозапуск виртуальной машины VBoxHeadless при загрузке с помощью Upstart - init и Graceful exit
  • logrotate custom "rotate" эквивалент действия для выскочки?
  • Как может выводиться уровень запуска «1 S»?
  • service vsftpd restart: не работает
  • Как отключить процесс демона на RHEL 6.3, как SMF на Solaris
  • Как сохранить выскочку установленной - всегда, не заменяйте sysvinit?
  • Запуск сценария инициализации при запуске определенного устройства и загрузке модуля ядра
  • Почему существуют оба сценария Upstart и сценарий init.d для нескольких демонов?
  • Interesting Posts

    Сортировка по имени?

    раздражающее сообщение «Соединение X11 отклонено из-за неправильной аутентификации», в то время как нет никакой проблемы вообще

    Почему не работает dzen2 при вызове через?

    Как изменить набор символов между разделителями для точной строки?

    Изменение пользователя maildir в пользовательское местоположение при создании пользователя

    Использование grep / awk / sed для сортировки и объединения двух файлов

    Проблемы с загрузкой файла через WebDAV?

    Подтвердить перед выходом из командной строки

    Как было изменено резервное копирование непустого каталога и сохранение метаданных, таких как права / файл прав пользователя / файл времени?

    Где топ / gnome-system-monitor получает информацию о потреблении процессора?

    Linux: подключение к двум различным сетям с одинаковым диапазоном ip

    sudo over ssh: нет tty настоящего и не запрошена программа askpass

    Почему опция exec не указана в / proc / mounts?

    Отладка журналов dmesg

    Как установить гостевые дополнения virtualbox в TrueOS?

    Linux и Unix - лучшая ОС в мире.