จะอัพโหลดไฟล์จากบรรทัดคำสั่งด้วย FTP หรือ SSH ได้อย่างไร?


30

ฉันไม่เคยทำสิ่งนี้มาก่อนและฉันกำลังสร้างสคริปต์ bash shell เพื่อทำสิ่งนี้ให้ฉัน ฉันจะเชื่อมต่อผ่าน ssh เพื่อทำบางสิ่ง (ซึ่งฉันรู้วิธีการแล้ว) ดังนั้นอาจมีวิธีอัปโหลดไฟล์ผ่าน ssh เพื่อให้ฉันสามารถทำได้ทั้งหมดในการเชื่อมต่อเดียว?

ฉันจะทำสิ่งนี้ได้อย่างไร

#!/bin/sh

cd ./files-to-upload
#upload the files

ที่ไม่ตอบคำถามนี้ แต่อาจช่วยคนบางคน: curl.ioอนุญาตให้คุณอัปโหลดไฟล์ผ่าน bash ไปยัง http สาธารณะโฮสติ้ง (ใช้ได้ไม่กี่ชั่วโมงฉันคิดว่า)
Vincent Fenet

คำตอบ:


56

คุณสามารถใช้scpเพื่อคัดลอกไปยังเครื่องระยะไกล

scp <file to upload> <username>@<hostname>:<destination path>

รหัสผ่านสามารถส่งผ่านสิ่งนี้ได้เช่นกัน? นอกจากนี้สิ่งนี้จะเริ่มต้นเซสชัน ssh หรือไม่ ฉันสามารถรันคำสั่งอื่นได้หรือไม่?
แอนดรู

2
ไม่คุณไม่สามารถส่งรหัสผ่านได้ แต่คุณสามารถตั้งค่าการรับรองความถูกต้องของคีย์ ssh นั่นหมายความว่าคุณไม่ได้ตรวจสอบสิทธิ์ด้วยรหัสผ่าน แต่ผ่านคีย์ที่เก็บไว้ในไฟล์และส่งโดยอัตโนมัติเมื่อเชื่อมต่อ และไม่อีกคุณไม่สามารถดำเนินการคำสั่งอื่นด้วยสิ่งนี้
เฟลิกซ์

ฉันหมายความว่าคุณสามารถเชื่อมต่อกับ ssh แล้วเรียกใช้ scp? หรือพวกเขาแยกคำสั่ง?
Andrew

2
sshและscpเป็นคำสั่งต่าง ๆ สำหรับคำแนะนำโปรดดูssh.com/support/documentation/online/ssh/adminguide/32/…
tangens

1
@Felix ควรจะได้ชี้ให้เห็นว่าถ้าคุณไม่ได้มีการตรวจสอบคีย์ SSH ตั้งขึ้นคุณจะได้รับแจ้งให้ใส่รหัสผ่าน นั่นหมายความว่าการมีการตั้งค่านั้นไม่ใช่ข้อกำหนดที่สำคัญยิ่งในการใช้คำสั่งนี้
aexl

6

คุณอาจกำลังมองหา SCP หรือสิ่งที่คล้ายกัน

#!/bin/bash

cd ./files-to-upload
scp * user@host:/path/to/upload/files/to

แน่นอนว่าสิ่งนี้จะต้องถูกปรับแต่งตามความชอบของคุณแทนที่ user @ host ด้วยข้อมูลจริงของคุณ คุณจะได้รับแจ้งให้ใส่รหัสผ่านเพื่ออัปโหลด


4

หากคุณต้องใช้ ssh (แทนที่จะเป็น scp) คุณสามารถทำได้:

for filename in *; do
  cat $filename | ssh user@host "cd /path/to/upload/files/to; cat - > $filename"
done

แต่ scp ปกติ (เช่นข้อเสนอแนะtangens ) เป็นสิ่งที่ดีที่สุด


ฉันใช้การเชื่อมต่อ FTp คุณช่วยบอกวิธีการถ่ายโอนหรือคัดลอกไฟล์จากท้องถิ่นไปยังระยะไกลได้หรือไม่โดยใช้ filezilla หรือ winscp ... ฉันต้องแยก zip หรือคัดลอกจากโลคอลไปยังรีโมต
Sushivam

1

scp เป็นคำตอบที่ดีกว่าเพราะมันจะถูกเข้ารหัสผ่าน SSH

อย่างไรก็ตามหากคุณต้องการทำมากกว่า ftp มาตรฐานดู ncftpput มันออกแบบมาโดยเฉพาะเพื่ออัปโหลดไฟล์:

NAME ncftpput - โปรแกรมถ่ายโอนไฟล์อินเทอร์เน็ตสำหรับสคริปต์

สรุป ncftpput [ตัวเลือก] รีโมตโฮสต์รีโมตไดเร็กทอรีแบบโลคัลไฟล์ ...



0

เมื่อคุณใช้scpคำสั่ง (สำเนาที่ปลอดภัย) คำสั่งนั้นจะเชื่อมต่อกับลูกค้าและหากคุณยังไม่มีลายนิ้วมือที่บันทึกไว้สำหรับอุปกรณ์โฮสต์มันจะถามรหัสผ่านโฮสต์ของคุณมิฉะนั้นมันควรเชื่อมต่อกับโฮสต์โดยอัตโนมัติ


0

สำหรับอินสแตนซ์ ec2 คุณต้องส่ง.pemไฟล์ด้วย

$scp -i ~/Desktop/amazon.pem ~/Desktop/file.zip  ubuntu@ec2-54-166-128-20.compute-1.amazonaws.com:~/data/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.