我将使用cronjob运行带有参数的python脚本。 参数是需要在脚本中使用的数据库的密码。
#!/usr/bin/python
import MySQLdb
import requests
import json
import os
import sys
param=sys.argv
password=param[1]
db = MySQLdb.connect(host="host.com",port=3306,user="user",passwd=password,db="db")
/ etc / crontab中:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# * * * * * user-name command to be executed
Crontab -e
*/5 * * * * /home/test/run.py "dbpass'"
哪个python:
/usr/bin/python
/ var / spool / mail
中的错误/bin/sh: dbpass': command not found
如果我手动运行脚本,它运行正常:python run.py" dbpass'"
任何帮助都将不胜感激。
答案 0 :(得分:0)
您发布的字符串包含unicode字符,其表示形式为
u'*/5 * * * *\u2002\u2002/home/test/run.py "dbpass\'"'
# or encoded to utf-8:
b'*/5 * * * *\xe2\x80\x82\xe2\x80\x82/home/test/run.py "dbpass\'"'
\u2002
是EN SPACE
所以第五个参数实际上是*\u2002\u2002/home/test/run.py
,而cron似乎将其视为*
,将下一个项目作为命令。
因此,只需将这些EN SPACE字符替换为普通空格即可。
答案 1 :(得分:-1)
您的crontab条目应该没有引号的密码:
*/5 * * * * /home/test/run.py dbpass