Задать вопрос
@Coloritt

Как добавить в автозагрузку Debian 8 .sh скрипт?

Здравствуйте! Нужно запустить при запуске системы скрипт .sh который будет подключаться к ssh серверу (поднимать ssh тоннель).
Конфиг для коннекта находится в файле /home/user/connect.sh я добавил строчку в /etc/rc.local

/home/user/connect.sh
Но оно упорно не хочет подключаться, скажите пожалуйста как и где правильно прописать?
  • Вопрос задан
  • 6246 просмотров
Подписаться 3 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 2
Frankenstine
@Frankenstine
Сисадмин
Запуск из /etc/rc.local - штука непредсказуемая, так как, например, запуск может произойти ещё до того, как заработает сеть, и поэтому скрипт обломается.
По-хорошему, нужно взять какой-нибудь сетевой серсис (апач например, если установлен) из /etc/init.d за образец, и создать свои скрипты, прописав их запуск под номером (для sysv init), бОльшим тех сервисов, которые нужны уже запущенными при старте вашего сервиса (или, для systemd - прописав правильные зависимости).
На худой конец, скрипт можно запустить из кронтаба нужного пользователя, вставив строчку:
@reboot /usr/local/bin/your-script.sh
но скрипт не будет отрабатывать завершение работы системы, так что лучше озаботьтесь таки созданием номального сервиса.
Ответ написан
Комментировать
@myppomeu
Предлагаю через systemd. Создай файл вида /etc/systemd/system/ssh_tunnel.service

Примерное содержимое:

[Unit]
Description=SSH tunnel
After=syslog.target network.target

[Service]
Type=forking

User=user
ExecStart=/usr/bin/ssh -i /home/user/.ssh/key -N -T -L 127.0.0.1:51143:192.168.5.5:143 -o MACs=hmac-sha2-512-etm@openssh.com user@host
ExecStop=/bin/kill $MAINPID
ExecReload=/bin/kill $MAINPID && /usr/bin/ssh -i /home/user/.ssh/key -N -T -L 127.0.0.1:51143:192.168.5.5:143 -o MACs=hmac-sha2-512-etm@openssh.com user@host
Restart=on-failure

[Install]
WantedBy=multi-user.target


Обновляем информацию systemd:
systemctl daemon-reload

Стартуем сервис:
systemctl start ssh_tunnel.service

Смотрим его статус:
systemctl status ssh_tunnel.service

Если все в порядке, включаем его в автозагрузку:
systemctl enable ssh_tunnel.service
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы