2017-01-16 22 views
3

Когда пользователь задает пароль в MySQL cli, aka -pXXXXXX, параметр пароля заменяется на -p****** в массиве argv.Очистить sys.argv в python

Так что, когда кто-то проверить список процессов с ps, они не могут видеть пароль.

Как я могу сделать то же самое в Python? Это не работает, очевидно

for arg in sys.argv[1:]: 
    arg = "" 
+0

Вы пробовали 'sys.argv = []'. Также 'дель sys.argv [1]' (или любой другой индекс аргумента должно быть), которые могли бы просто удалить один элемент? – martineau

+0

@martineau Это больше нравится, чтобы переопределить память, которая указывает на ARGV – daisy

ответ

0

Вы можете создать оболочку, которая принимает пароль и другие аргументы. Затем он породит ребенка, передаст ему пароль таким образом, который не отображается в командной строке, например. с multiprocessing и убить себя. Для убийства процессов, сохраняя при этом своих детей, посмотрите here.

0

sys.argv = [sys.argv[0]]

работ и является более эффективным и элегантным, чем удаление всех, кроме первого элемента. Я не могу подтвердить, что это перезапишет или удалит предыдущее значение sys.argv в памяти.