簡體   English   中英

使用cronjob使用參數運行python腳本會給出錯誤:/ bin / sh:密碼:找不到命令

[英]Running python script with a parameter using cronjob gives error: /bin/sh: password: command not found

我將使用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'”

任何幫助,將不勝感激。

您發布的字符串包含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\'"'

\ 是EN SPACE

因此,第五個參數實際上是*\ \ /home/test/run.py ,似乎cron將*視為* ,將下一項作為命令。

因此,只需將這些EN SPACE字符替換為普通空格就可以了。

您的crontab條目應具有不帶引號的密碼:

*/5 * * * *  /home/test/run.py dbpass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM