LINUX.ORG.RU

запуск скрипта python3.5 через cron

 , ,


2

1

Есть 2 скрипта на питоне, которые я запускал с помощью bash скриптов на Ubuntu, все прекрасно отрабатывало. Сейчас передо мной задача - перенести эти скрипты на CentOS 6. Так вот - выдал права на запуск скриптов chmod +x /path и сделал root'а владельцем. Запуск прописываю прямиков в /etc/crontab Если я запускаю руками скрипт /path_to_script.sh все работает замечательно, но если я ставлю скрипт в расписание cron'а - вылезает ошибка: python3.5: команда не найдена. Точно также если я запускаю отдельно скрипт python3.5 /path_to_script.sh - все работает замечательно, через cron упирается рогом...

Я добавил в скрипты питона #!/usr/bin/env python3.5

К сожалению, я совсем не умею в питон, скрипты на питоне не мои, но запустить их нужно по расписанию.

#!/bin/bash
echo -e "!------------------" >> /mnt/folder/EnerGenie.log #/var/log/log_scripts/EnerGenie.log
TodayIs=$(date +%d%b%y_%H:%M:%S)
echo $TodayIs >> /mnt/folder/EnerGenie.log #/var/log/log_scripts/EnerGenie.log
echo 'Включение' >> /mnt/folder/EnerGenie.log #/var/log/log_scripts/EnerGenie.log
exec 2>> /mnt/folder/EnerGenie.log #/var/log/log_scripts/EnerGenie.log
python3.5 /root/scripts/EnerGenie/EnerGenie_on.\py
echo -e "------------------!\\n" >> /mnt/folder/EnerGenie.log #/var/log/log_scripts/EnerGenie.log
exit 0
#!/usr/bin/env python3.5
import http.client
import urllib.parse

# HTTP заголовок
headers = {'Content-type': 'application/x-www-form-urlencoded',
          'Accept': 'text/plain'}

# параметры передаваемые на сервер для авторизации
# pw - пароль
params = urllib.parse.urlencode({'pw': 1})
# подключение к серверу (розетка)
conn = http.client.HTTPConnection('10.4.0.21')
# запрос на авторизацию
conn.request('POST', '/login.html', params, headers)
response = conn.getresponse()
print(response.status, response.reason)
data = response.read()
conn.close()

# параметры передаваемые на сервер для включения/отключения розетки
# cte1-cte4 - слот, принимает 0 или 1. 0 - выключить, 1 - включить
params = urllib.parse.urlencode({'cte1': '', 'cte2': '', 'cte3': 1, 'cte4': ''})
# подключение к серверу (розетка)
conn = http.client.HTTPConnection('10.4.0.21')
# запрос на включение/отключение
conn.request('POST', '', params, headers)
response = conn.getresponse()
print(response.status, response.reason)
data = response.read()
conn.close()

Я добавил в скрипты питона #!/usr/bin/env python3.5
python3.5 /root/scripts/EnerGenie/EnerGenie_on.\py

тогда уж, сделать исполнимым и убрать «python3.5»; или env в начале (shebang нужен если запускается ./<скрипт>)

ну и проверь $PATH: чтобы содержал директорию с python3.5

anonymous ()
Ответ на: комментарий от anonymous

Добавил в PATH директорию с папкой Python3.5.2 - теперь ошибка: /usr/bin/env: python 3.5: нет такого файла иди каталога.

Я устанавливал python3.5 make файлом в директорию /usr/src, в общем ее и добавил в PATH:deafault_paths:/usr/src:

может, я не ту директорию добавляю, но вообще /usr/src/Python3.5.2 есть такая папочка.

mj_sagurov ()
Ответ на: комментарий от MyLittleLoli

Решилось

В общем, решился вопрос совместными усилиями :)

1. Нужно было добавить то, что ВЫ указали - полный путь до питона... В моем случае это /usr/src/Python-3.5.2/python

Здесь нет файла именно python3.5

2. Прописать в crontab в PATH директорию с питоном, т.е: /usr/src/Python-3.5.2: т.е. то, что посоветовал ggrn.

Всем огромное спасибо! Есть тут какие кнопочки чтобы отблагодарить? Честно говоря первый раз на форум писал с просьбой о помощи. Спасибо вам!

mj_sagurov ()