Задание, не работающее над crontab (задание включает VPN),

Я - новичок Linux, поэтому простите мое незнание.

Я пытаюсь получить a file.sh работать в crontab, таким образом, это работает каждый день одновременно. Когда я запускаю скрипт на терминале, он хорошо работает. Но это не работает в crontab. Файл похож на это:

echo 'password' | snx
python3 /home/absolute/path/to/script.py
snx -d

Первая строка соединяется с VPN. Вторая строка запускает скрипт Python (который получает данные через запрос и затем загружает данные на базу данных). Третья строка разъединяется от VPN.

Как я сказал, это хорошо работает при работе терминала. Но когда я работаю crontab -e и добавьте задание как:

* * * * * /home/absolute/path/to/file.sh

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

Я уже попробовал:

  • Я сделал file.sh исполняемый файл через chmod
  • Я проверил, что задания крона действительно, работал: для проверки этого я добавил некоторые строки к file.sh это добавляет сообщения в файл debug.txt. Сообщения появляются в debug.txt, таким образом, я знаю file.sh был работал кроном.
  • Я проверил, что это не была проблема с переменными среды. Я экспортировал обоих PATH и SHELL и к crontab и к file.sh. Это все еще не работает.
  • Добавьте хижину #!/bin/sh (и другие) в начале файла.
  • Звонить snx с полным путем.

Я думаю, что это может быть что-то, чтобы сделать с SNX, не работающим над crontab. Эта проблема указывает на ту возможность:

https://stackoverflow.com/questions/54221762/automate-snx-restart-with-crontab

Но я не уверен, как использовать ту информацию (снова, я - новичок Linux). Я попробовал точное решение, предложенное там (т.е. Я добавил те строки наверху своего файла), но это все еще не работает.

Что еще я могу попытаться заставить сценарий работать над кроном? Там другой путь состоит в том, чтобы запланировать сценарии для выполнения периодически? Для меня кажется странным, что крон ведет себя настолько по-другому по сравнению с терминалом.

0
задан 23 December 2019 в 05:02

1 ответ

Измените свой сценарий на:

#!/bin/sh
echo 'password' | snx
python3 /home/absolute/path/to/script.py
snx -d

А "хижина" требуется, чтобы Linux знал, как выполнить Ваши сценарии. Иначе нет никакого (безошибочного) пути к Ядру, чтобы знать, пишете ли Вы Shell, Python, Perl или целый диапазон других языков.

0
ответ дан 23 December 2019 в 22:52

Другие вопросы по тегам:

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