Санитарная обработка прочитанной записи в Bash - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть скрипт, который запрашивает учетные данные пользователя для формулировки команды curl. У меня проблема в том, что если пароль имеет специальный символ, он может испортить команду curl.

пример кода:

curl -k -o ~ / Desktop / output.txt https://$name:$password@'server.example.com/serverpage.asp?action=MakeList&User='$enduser

пример ввода

Имя: тест

пароль: P @ 55w0rd

вывод:

curl: (6) Could not resolve host: 55w0rd!@server.example.com; nodename nor servname provided, or not known

Я понимаю, что команда curl нажимает "@" в пароле и пытается подключиться к 55w0rd!@server.example.com вместо server.example.com.

Как мне "санировать" ввод для экранирования специальных символов?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 08 ноября 2011

Попробуйте использовать параметр "-u" для curl.С другой стороны, попробуйте использовать "для запуска и завершения параметров и, наконец, использовать формат $ {varname} для доступа к переменным, чтобы предотвратить проблемы с выходом из bash.

curl -k -u "${name}:${password}" -o "~/Desktop/output.txt" "https://server.example.com/serverpage.asp?action=MakeList&User=${enduser}"
1 голос
/ 08 ноября 2011

Вы хотите ввести свой пароль (Pp%340ssword!).AFAIK Нет простого способа сделать это в bash, у этого предыдущего потока есть некоторые предложения, связанные с Perl и т. Д. Тестирование или просмотр источника curl может показать, что достаточно просто заменить @ на %40,Я не пытался в общем случае.

0 голосов
/ 09 ноября 2011
curl -k -o ~/Desktop/output.txt "https://${name}:${password}@server.example.com/serverpage.asp?action=MakeList&User=${enduser}"
...