Python:命令行参数不正确

时间:2014-05-10 23:12:49

标签: python django shell

我确实想验证使用PassLib库生成的Django框架哈希 (https://pythonhosted.org/passlib/lib/passlib.hash.django_std.html

我的python脚本看起来像这样:

#!/usr/bin/python2.7

import sys
from passlib.hash import django_pbkdf2_sha256 as handler

def verifizieren(password_plain, django_hash):
     handler.verify(password_plain, django_hash)

def main():
    print (sys.argv[1])
    print (sys.argv[2])
    verifizieren(sys.argv[1], sys.argv[2])

main()

当我使用

在命令行中调用我的脚本时
python myscript.py test pbkdf2_sha256$12000$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR/F8Mu/rnpsN+7atY4hZAwlrQ=

不知何故,我的哈希被削减了。而不是

pbkdf2_sha256$12000$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR/F8Mu/rnpsN+7atY4hZAwlrQ=

我的argv [2]是

pbkdf2_sha2562000/F8Mu/rnpsN+7atY4hZAwlrQ=

为什么python会切断命令行参数的其余部分? 我怎么能避免这个?

1 个答案:

答案 0 :(得分:1)

尝试按如下方式调用脚本:

python myscript.py test 'pbkdf2_sha256$12000$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR/F8Mu/rnpsN+7atY4hZAwlrQ='

第二个参数周围的单引号将保护字符串不被shell解释,因为shell会将$后面的任何内容理解为shell变量。

由于$EkKZXYXv0adl$GZppRyXed3a0y1uZMBR在您的shell环境中显然不存在,因此它们会扩展为空。