มีวิธีการส่งชื่อผู้ใช้และรหัสผ่านจากไฟล์แทนบรรทัดคำสั่งผ่าน --user และ - รหัสผ่าน?
พื้นหลัง: ฉันต้องการเรียกใช้ wget ผ่าน cron และไม่ต้องการให้ชื่อผู้ใช้ / รหัสผ่านปรากฏในมุมมองกระบวนการ
มีวิธีการส่งชื่อผู้ใช้และรหัสผ่านจากไฟล์แทนบรรทัดคำสั่งผ่าน --user และ - รหัสผ่าน?
พื้นหลัง: ฉันต้องการเรียกใช้ wget ผ่าน cron และไม่ต้องการให้ชื่อผู้ใช้ / รหัสผ่านปรากฏในมุมมองกระบวนการ
คำตอบ:
ใช้.wgetrc
ไฟล์ ( คู่มือ GNU ) ที่คุณสามารถตั้งชื่อผู้ใช้และรหัสผ่านสำหรับทั้ง ftp และ http
หากต้องการใช้หนังสือรับรองเดียวกันสำหรับทั้งสองระบุ
user=casper
password=CasperPassword
หรือเป็นรายบุคคล
ftp_user=casperftp
ftp_password=casperftppass
http_user=casperhttp
http_password=casperhttppass
.wgetrc
ให้ความยืดหยุ่นในการทำงานร่วมกับเซิร์ฟเวอร์มากกว่าหนึ่ง? หากไม่.netrc
เป็นทางออกที่ดีกว่าให้ดูคำตอบอื่น ๆจาก tobias.pal
.netrc
ไฟล์ แต่มันบันทึกไว้
ฉันประหลาดใจที่ไม่มีใครพูดถึง.netrc
ไฟล์ สร้างไฟล์ก่อนหากไม่มีอยู่และตั้งค่าการอนุญาตที่ปลอดภัย:
touch ~/.netrc
chmod 600 ~/.netrc
จากนั้นคุณสามารถเพิ่มชื่อโฮสต์ชื่อผู้ใช้และรหัสผ่านทั้งหมดในบรรทัดเดียว:
echo 'machine example.com login casper password CasperPassword' >> ~/.netrc
จากนั้นเมื่อคุณทำwget https://example.com
และเซิร์ฟเวอร์ตอบสนองด้วย401 Authorization Required
wget จะลองอีกครั้งด้วยชื่อผู้ใช้และรหัสผ่านจาก~/.netrc
ไฟล์
เมื่อใช้สิ่งนี้จาก cron ให้แน่ใจว่าคุณมีHOME
ไดเรกทอรีที่ถูกต้อง บ่อยครั้งที่ชุด cron HOME=/
(ในกรณีนี้คุณจะต้องสร้างไฟล์เป็น/.netrc
แต่จะดีกว่าถ้าตั้งค่าที่เหมาะสมHOME
ในตอนต้นของสคริปต์เช่นexport HOME=/root
)
คุณสามารถระบุหลายโฮสต์ได้~/.netrc
หนึ่งรายการต่อบรรทัด man netrc
รายละเอียดเพิ่มเติมใน
man netrc
ใน OP สงสัยว่าทำไมงานนี้แล้ว @ryenus ความคิดเห็นของคุณช่วยฉันขอบคุณ ~ ยินดีต้อนรับด้วยตนเองเสมอ: P จากนั้นฉันรู้ว่ามันเป็นไฟล์ rc ที่ใช้โดยftp
นั่นคือมันอาจ ไม่ทำงานสำหรับ http ฉันจะลองใน http ภายหลัง
ในหลาย ๆ ด้านการม้วนงออาจเป็นทางเลือกที่ดีกว่า Wget ค่อนข้างเก่าเมื่อเวลาผ่านไป
สามารถใช้สวิตช์ -n ของ curl สำหรับงานนี้: http://curl.haxx.se/docs/manpage.html#-n
-i
ตัวเลือกและป้อนชื่อผู้ใช้และรหัสผ่านจากอินพุตมาตรฐาน