จะระบุชื่อผู้ใช้และรหัสผ่านในคำสั่ง ftp ได้อย่างไร


9

ฉันต้องการโทรไป ftp ในเชลล์สคริปต์โดยอัตโนมัติ ถ้าฉันพิมพ์

$ftp somehost.domain.com

ฉันได้รับแจ้งชื่อผู้ใช้และรหัสผ่าน ฉันต้องการให้ชื่อผู้ใช้และรหัสผ่านนั้นเป็นส่วนหนึ่งของการโทรไปยัง ftp หน้าคนสำหรับ FTP พูดว่าฉันสามารถออกคำสั่งให้ผู้ใช้ที่ FTP พรอมต์ - แต่ฉันต้องการที่จะเข้าสู่ระบบไปยัง FTP ทั้งหมดในหนึ่งไป เป็นไปได้ไหม ฉันไม่เห็นอะไรเลยในธงชาติสำหรับ ftp ฉันเห็นว่าตัวเลือก -s ให้ตัวเลือกในการระบุคำสั่ง ftp บางคำสั่งเมื่อฉันมีพรอมต์ ftp - แต่ฉันต้องให้ชื่อผู้ใช้เพื่อรับพรอมต์ ...


expect(ส่วนขยาย tcl / tk แปลก ๆ ) เป็นโปรแกรมที่เหมาะสำหรับสิ่งต่าง ๆ เช่น - รอคำเตือน ให้คำตอบ ... รอคำตอบ ให้คำตอบใหม่ ... expectรอ "ogin:" และส่งชื่อผู้ใช้ของคุณจากนั้นรอ "assword:" และส่งรหัสผ่านของคุณ
Baard Kopperud

คำตอบ:


10

ใช้.netrcไฟล์ในโฮมไดเร็กตอรี่ของคุณ

เนื้อหาคือ:

# machine <hostname> login <username> password <password>
machine ftp.example.com login myuser password $ecret

หากนี่คือสิ่งที่คุณทำโดยทางโปรแกรมให้เขียน.netrcก่อนเชื่อมต่อลบออกเมื่อเสร็จแล้ว


ไฟล์นี้เป็นไฟล์เฉพาะสำหรับftpหรือมันอ่านโดยโปรแกรมอื่น ๆ ด้วย?
terdon

netrc(5)หน้าคนบอกว่ามันเป็น "สำหรับftp(1)" แต่ผมไม่แน่ใจว่าftpเป็นสิ่งเดียวที่จะใช้มัน
bahamat

หากคุณต้องการหาไฟล์ " locate '.netrc'
.netrc

1

คุณยังสามารถเขียนสคริปต์ shell ac โดยใช้doc ที่นี่ซึ่งจะเป็นดังนี้:

#!/bin/sh
HOST='someftpserver.com'
USER='username'
PASSWD='password'
FILES='*.txt'
#
ftp -nv $HOST>$FTPLOG <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd somedirectory
binary
mget $FILES
quit
END_SCRIPT

0

คุณสามารถพิจารณาwputหรือwgetเป็นทางเลือกขึ้นอยู่กับความต้องการของคุณ

ฉันไม่ได้ใช้wgetเมื่อเร็ว ๆ นี้ แต่ฉันได้ใช้wputเพราะฉันไม่ต้องการสร้างหรือแก้ไขไฟล์ตามที่แนะนำในคำตอบก่อนหน้านี้

สำหรับwputไวยากรณ์คือ:

wput <filename> ftp://<username>:<password>@<address>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.