2015-10-03 2 views
0

У меня есть следующий локон команда, которая работает прекрасно:локон командной строки POST пароль

curl --silent --location -cookie "$COOKIE" --cookie-jar "$COOKIE" \ 
--form 'username=xxx' --form 'password=yyy' 'http://example.com' 

Он входит в сайт http://example.com вывешивать форму с именами переменных имя пользователя и пароль.

Проблема в том, что я не хочу передавать пароль в ясном виде.

Я также попытался сохранить пароль в файле passwd в рабочем каталоге (chmod 600 passwd) и использовал следующую команду curl (вот почему я использовал --form вместо -data, который имел бы были прекрасно работали с паролем в незашифрованном виде), однако, он не работает:

curl --silent --location -cookie "$COOKIE" --cookie-jar "$COOKIE" \ 
--form 'username=xxx' --form 'password=<passwd' 'http://example.com' 

Любое предложение о том, как решить эту проблему?

Привет, Стефано

ответ

0

Hans Z. Ответ на использование переменных окружения является правильным, на мой взгляд. Хотя я могу просто добавить, что в bash вы можете использовать команду read, которая запрашивает пароль и не делает его видимым в истории.

Так что использование будет выглядеть следующим образом

$ read -s PASSWD # -s is there so the characters you type don't show up 
$ curl --silent --location -cookie "$COOKIE" --cookie-jar "$COOKIE" \ 
--form 'username=xxx' --form "password=${PASSWD}" 'http://example.com' 

UPDATE:

Другое решение найдено в комментариях, чтобы использовать curl «s --data-urlencode [email protected] аргумент. Цитирование справочной страницы:

имя @ имя файл Это сделает данные свертывания нагрузки из данного файла (включая любые переводы строк), URL-кодирование, что данные и передать его дальше в POST.

И последняя команда выглядела

$ curl --silent --location -cookie "$COOKIE" --cookie-jar "$COOKIE" \ 
--data 'username=xxx' --data-urlencode "[email protected]" 'http://example.com' 
+0

Спасибо за быстрые ответы. Я забыл, что я хотел бы запланировать команду curl в cron, поэтому использование переменной окружения не помогло бы, потому что я не хочу ставить 'export PASSWD = secret' перед командой cron в файле crontab , – stx73

+0

Почему бы не сделать это что-то подобное? 'PASSWD = $ (cat path-to-file-with-your-password); cron ... --form "password = $ PASSWD" ... '(это плохо форматирование, все должно быть в одной строке) –

+0

@ stx73 - вы можете установить постоянную переменную окружения, вам не нужно делать экспорт каждый время. –

0

Установите пароль в переменной окружения, например, export PASSWD=secret и использовать его в --form "password=${PASSWD}".

Смежные вопросы