Я - новичок 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). Я попробовал точное решение, предложенное там (т.е. Я добавил те строки наверху своего файла), но это все еще не работает.
Что еще я могу попытаться заставить сценарий работать над кроном? Там другой путь состоит в том, чтобы запланировать сценарии для выполнения периодически? Для меня кажется странным, что крон ведет себя настолько по-другому по сравнению с терминалом.
Измените свой сценарий на:
#!/bin/sh
echo 'password' | snx
python3 /home/absolute/path/to/script.py
snx -d
А "хижина" требуется, чтобы Linux знал, как выполнить Ваши сценарии. Иначе нет никакого (безошибочного) пути к Ядру, чтобы знать, пишете ли Вы Shell, Python, Perl или целый диапазон других языков.