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
()

В 1 скрипте укажи полный путь до питона. /usr/bin/python3.5 или где там он у тебя.

Deleted
()

/root/scripts/EnerGenie/EnerGenie_on.\py

Интересное название

zolden ★★★★★
()
Последнее исправление: zolden (всего исправлений: 1)
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от ggrn

Руками если поставить - то будет, у меня сейчас только Python2.6 ну и тот, который я сам ставил - Python3.5

Ставил вот так: wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz Распаковал в /usr/src cd Python-3.5.2 ./configure make altinstall

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

Решилось

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

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

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

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

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

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

Решилось

Спасибо вам, нашел решение! :) Надеюсь, кому-нибудь эта ветка форума поможет...

Закрываю тему как решенную.

mj_sagurov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.