ความหมายของคำสั่ง "วางไข่" ของ linux shell คืออะไร? (Centos6)


5

ฉันจำเป็นต้องรู้วิธีการตั้งค่างาน cron ที่เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลโดยอัตโนมัติและเปลี่ยนไดเรกทอรีและรับไฟล์ทั้งหมดในไดเรกทอรีนั้นไปยังท้องถิ่น

ฉันคิดว่าฉันต้องใช้ SFTP แต่ฉันเห็นคำสั่งบางคำเรียกว่า "วางไข่" ในเชลล์สคริปต์บางตัวและฉันสับสนว่าจะทำอะไรและจะทำอย่างไร

spawn  sftp user@ipaddress
cd xxx/inbox
mget *

จะทำงานในบริบทของการดาวน์โหลดไดเรกทอรีระยะไกลได้หรือไม่


1
มันสร้างกระบวนการใหม่: astro.virginia.edu/class/oconnell/astr511/idl_5.1_html/…ฉันไม่มีคำสั่งนั้น คุณควรวางไข่ -v; วางไข่ -V วางไข่ - รุ่น; วางไข่ - การใช้; วางไข่ - ช่วย; วางไข่ -h; วางไข่ - ช่วย; ช่วยวางไข่; คนวางไข่และดูว่าคุณสามารถค้นหาข้อมูลใด ๆ เกี่ยวกับคำสั่งนั้นมาจากไหน หรืออย่างน้อยก็บอกเราว่าคุณใช้ระบบปฏิบัติการใดอยู่ มันจะมีประโยชน์ที่จะทราบว่าไคลเอนต์ ftp ที่คุณติดตั้ง (ncftp, lftp, ftp, ฯลฯ ) และถ้าคุณต้องการพิสูจน์ตัวตนกับเซิร์ฟเวอร์ด้วยชื่อผู้ใช้และรหัสผ่าน
ЯрославРахматуллин

มันคือเปลือกอะไร? บรรทัดแรกของสคริปต์เริ่มต้นด้วย#!หรือไม่ คุณช่วยบอกเราหน่อยได้ไหมว่ามีอะไรอยู่ในบรรทัดแรก คุณพบบรรทัดที่คุณแสดงที่นี่ที่ไหนสักแห่งเช่นนี้หรือคุณรวบรวมจากหลายแหล่ง? คำสั่ง spawn ดูเหมือนคำสั่งของสคริปต์ที่คาดหวัง แต่สองคำสั่งต่อไปนี้ดูเหมือนคำสั่ง sftp (เช่นแบตช์ sftp)
pabouk

ในที่สุดคุณจัดการเพื่อตั้งค่างาน cron หรือไม่?
pabouk

ไม่จริงฉันกำลังทำมันใน amazon สำหรับตอนนี้ขอบคุณสำหรับคำตอบของคุณฉันจะลองและดู .. ขอบคุณ ..
user1179459

คำตอบ:


5

ในกรณีของคุณspawnน่าจะเป็นคำสั่งของภาษาสคริปต์ที่คาดว่าจะช่วยให้การดำเนินงานของโปรแกรมแบบโต้ตอบอัตโนมัติ ในกรณีเช่นนี้spawnเรียกใช้คำสั่งภายนอกจากสคริปต์ที่คาดหวัง ตัวอย่างสคริปต์ของคุณไม่มีลำดับShebang (บรรทัดแรกที่เริ่มต้นด้วย#!) บ่งชี้ถึงexpectล่ามและจะไม่ถูกตีความโดยคาดหวังเมื่อดำเนินการโดยตรง

การพิสูจน์ตัวตนด้วยรหัสผ่านด้วย sftp ถูก จำกัด ไว้ที่โหมดโต้ตอบ หากต้องการควบคุม sftp ในโหมดโต้ตอบคุณสามารถใช้ตัวอย่างสคริปต์คาดหวังต่อไปนี้:

#!/usr/bin/env expect
set timeout 20    # max. 20 seconds waiting for the server response

set user username
set pass your-pass
set host the-host-address
set dir  server-dir

spawn sftp $user@$host
expect assword:

send "$pass\r"
expect sftp>

send "cd $dir\r"
expect sftp>

send "mget *\r"
expect sftp>

send "exit\r"
expect eof

ความเป็นไปได้อีกอย่างคือการใช้การรับรองความถูกต้องของรหัสสาธารณะซึ่งมีความปลอดภัยมากกว่า (ดูขั้นตอน ) ในกรณีเช่นนี้คุณสามารถใช้ sftp โดยตรงในโหมดแบทช์:

#!/bin/sh
user=username
host=the-host-address
dir=server-dir

sftp -b - "$user@$host" <<+++EOF+++
cd "$dir"
mget *
exit
+++EOF+++
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.