এটি ওপি যা চেয়েছিল তার চেয়ে অনেক বেশি, তবে যেহেতু সুরক্ষিতভাবে পাসওয়ার্ডগুলিতে পাস করার জন্য এটি শীর্ষ ফলাফল curl
, আমি এই সমাধানগুলি এখানে অন্যদের জন্য যুক্ত করছি যারা এটি অনুসন্ধান করে আগত।
দ্রষ্টব্য: কমান্ডের -s
জন্য আর্গ পোজিক্স read
নয়, এবং এটি সর্বত্র পাওয়া যায় না, সুতরাং এটি নীচে ব্যবহার করা হবে না। আমরা ব্যবহার করবে stty -echo
এবং stty echo
পরিবর্তে।
দ্রষ্টব্য: নীচে সমস্ত ব্যাশ ভেরিয়েবলগুলি সেট না করে বরং কোনও ফাংশনে থাকলে স্থানীয় হিসাবে ঘোষণা করা যেতে পারে।
দ্রষ্টব্য: perl
আমি যে সমস্ত সিস্টেমে চেষ্টা করেছি সেগুলিতে এটি বেশিরভাগ ক্ষেত্রে উপলভ্য যা এটি অনেক কিছুর উপর নির্ভরশীলতার কারণে হয়েছে, যেখানে আছে ruby
এবং python
নেই তাই perl
এখানে ব্যবহার করছি। আপনি যদি গ্যারান্টি দিতে পারেন ruby
/ python
আপনি কোথায় করছেন তবে আপনি perl
কমান্ডটি তাদের সমতুল্য দিয়ে প্রতিস্থাপন করতে পারেন ।
দ্রষ্টব্য: bash
ম্যাকোস 10.14.4 এ 3.2.57 এ পরীক্ষিত । অন্যান্য শেল / ইনস্টলগুলির জন্য কিছু ছোট অনুবাদ প্রয়োজন হতে পারে।
নিরাপদে কোনও ব্যবহারকারীকে কার্ল (পাসওয়ার্ড) পাসওয়ার্ডের জন্য অনুরোধ করুন। বিশেষত দরকারী যদি আপনার একাধিকবার কার্ল কল করতে হয়।
আধুনিক শেলগুলির জন্য, যেখানে echo
একটি অন্তর্নির্মিত (এর মাধ্যমে চেক করুন which echo
):
url='https://example.com'
printf "Username: "
read username
printf "Password: "
stty -echo # disables echoing user input, POSIX equivalent for 'read -s'
read pass
printf "\n" # we need to move the line ahead
stty echo # re-enable echoing user input
echo ${pass} | sed -e "s/^/-u ${username}:/" | curl --url "${url}" -K-
unset username
unset pass
পুরানো শেলগুলির জন্য, যেখানে এর echo
মতো কিছু রয়েছে /bin/echo
(যেখানে এটি যা কিছু থাকে প্রক্রিয়া তালিকায় দেখা যায়):
এই সংস্করণটি পাসওয়ার্ডটি ব্যবহার করতে পারে না , তার পরিবর্তে নীচে দেখুন see
url='https://example.com'
printf "Username: "
read username
printf "Password: "
stty -echo # disables echoing user input, POSIX equivalent for 'read -s'
perl -e '
my $val=<STDIN>;
chomp $val;
print STDERR "\n"; # we need to move the line ahead, but not send a newline down the pipe
print $val;
' | sed -e "s/^/-u ${username}:/" | curl --url "${url}" -K-
stty echo # re-enable echoing user input
unset username
যদি আপনাকে কোনও ফাইলটিতে অস্থায়ীভাবে পাসওয়ার্ড সংরক্ষণ করতে হয়, এটি পরিষ্কার করার আগে একাধিক কমান্ডের জন্য এটি পুনরায় ব্যবহার করার জন্য (কারণ আপনি কোডটি পুনরায় ব্যবহারের জন্য ফাংশন ব্যবহার করছেন এবং কোড পুনরাবৃত্তি করতে চান না এবং করতে পারবেন না) প্রতিধ্বনি মাধ্যমে প্রায় মান পাস)। (হ্যাঁ, এই ফর্মটি বিভিন্ন লাইব্রেরিতে ফাংশন না করে এই ফর্মটি দেখতে কিছুটা স্বার্থপর; এগুলি দেখানোর জন্য প্রয়োজনীয় ন্যূনতম কোডে আমি তাদের হ্রাস করার চেষ্টা করেছি))
প্রতিধ্বনি অন্তর্নির্মিত হলে (এটি বিশেষত স্বীকৃত, যেহেতু প্রতিধ্বনি একটি অন্তর্নির্মিত তবে সম্পূর্ণতার জন্য সরবরাহ করা হয়):
url='https://example.com'
filepath="$(mktemp)" # random path, only readable by current user
printf "Username: "
read username
printf "Password: "
stty -echo # disables echoing user input, POSIX equivalent for 'read -s'
read pass
echo "${pass}" > "${filepath}"
unset pass
printf "\n" # we need to move the line ahead
stty echo # re-enable echoing user input
cat "${filepath}" | sed -e "s/^/-u ${username}:/" | curl --url "${url}" -K-
rm "${filepath}" # don't forget to delete the file when done!!
unset username
প্রতিধ্বনি যখন এর মতো কিছু হয় /bin/echo
:
url='https://example.com'
filepath="$(mktemp)" # random path, only readable by current user
printf "Username: "
read username
printf "Password: "
stty -echo # disables echoing user input, POSIX equivalent for 'read -s'
$(perl -e '
my $val=<STDIN>;
chomp $val;
open(my $fh, ">", $ARGV[0]) or die "Could not open file \"$ARGV[0]\" $\!";
print $fh $val;
close $fh;
' "$filepath")
printf "\n" # we need to move the line ahead
stty echo # re-enable echoing user input
cat "${filepath}" | sed -e "s/^/-u ${username}:/" | curl --url "${url}" -K-
rm "${filepath}" # don't forget to delete the file when done!!
unset username