ฉันกำลังเขียนเชลล์สคริปต์ที่ฉันต้องลบไฟล์ในเครื่องระยะไกลผ่านเชลล์สคริปต์
ไหลด้วยตนเอง:
ssh username@domain.com
.. จากนั้นที่โดเมน:
cd ./some/where
rm some_file.war
วิธีการทำงานให้สำเร็จ
ฉันกำลังเขียนเชลล์สคริปต์ที่ฉันต้องลบไฟล์ในเครื่องระยะไกลผ่านเชลล์สคริปต์
ไหลด้วยตนเอง:
ssh username@domain.com
.. จากนั้นที่โดเมน:
cd ./some/where
rm some_file.war
วิธีการทำงานให้สำเร็จ
คำตอบ:
คุณสามารถส่งssh
คำสั่งให้กับไคลเอ็นต์เพื่อดำเนินการแทนการเริ่มเชลล์โดยต่อท้ายคำสั่ง ssh
ssh username@domain.com 'rm /some/where/some_file.war'
คุณไม่จำเป็นต้องไปcd
ที่ที่ตั้งเพื่อลบบางสิ่งออกไปตราบใดที่คุณระบุเส้นทางแบบเต็มดังนั้นจึงเป็นอีกก้าวที่คุณสามารถข้ามได้
คำถามต่อไปคือการตรวจสอบ หากคุณเพิ่งเปิดใช้งานคุณจะได้รับพร้อมท์ให้ใส่รหัสผ่าน หากคุณไม่ต้องการป้อนสิ่งนี้แบบโต้ตอบคุณควรตั้งค่าการพิสูจน์ตัวตนแบบ publickey
-f
การrm
ดำเนินการโทรระยะไกลหรือไม่
rm
พวกเขาควรส่งต่อไปยังผู้โทรเว้นแต่ผู้ใช้จะรู้ว่าจะต้องคาดหวังอะไรและทำไมพวกเขาถึงเอาชนะอะไรบางอย่าง ข้อผิดพลาดจำนวนมากและการแก้จุดบกพร่องที่น่าผิดหวังในภายหลังสามารถหลีกเลี่ยงได้โดยใช้ตัวเลือกที่คุณต้องการใน Senario ที่ระบุเท่านั้น
-f
ตัวเลือกที่rm
สั้น--force
และมีผลบังคับใช้ไม่ว่าจะเป็นข้อผิดพลาดสำหรับไฟล์ที่ไม่มีอยู่หรือข้อโต้แย้งปลอม โดยปกติแล้วคำสั่งจะทำงานบนเชลล์ที่ไม่ใช่แบบอินเตอร์แอคทีฟซึ่งมีค่าเริ่มต้นเป็นแบบอินเตอร์แอคทีฟน้อยกว่า แต่คุณไม่ได้รับหรือคุณได้รับพรอมต์แบบโต้ตอบสิ่งที่ต้องทำคือแก้ไขการตั้งค่าที่เกี่ยวข้องโดยตรง หากคุณกำลังเขียนสคริปต์นี้คุณไม่ควรมีปัญหาที่อยู่แล้วและถ้าคุณอยู่ในเปลือกโต้ตอบ (ที่คุณมีความเป็นไปได้ของความผิดพลาดภัยพิบัติ) คุณควรใช้-I
ใน--interactive=never
การตั้งพฤติกรรมที่คุณต้องการ
หากคุณต้องการลบไฟล์ระยะไกลด้วยการใช้ sudo คุณจะต้องดำเนินการดังนี้:
ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)
คำสั่ง ssh มีพารามิเตอร์คำสั่ง (พารามิเตอร์สุดท้ายในคำสั่ง) ที่คุณสามารถใช้เพื่อเรียกใช้คำสั่งระยะไกล
ตั้งค่ารหัสผ่านที่ไม่มีรหัสผ่านจากนั้นเพิ่มคำสั่งเป็นส่วนหนึ่งของคำสั่ง ssh ดู: http://www.dotkam.com/2009/03/10/run-commands-remotely-via-ssh-with-no-password/