เชื่อมต่อกับพอร์ตต่าง ๆ ผ่านทาง scp และ ssh - ทำไมจึงตั้งค่าสถานะแตกต่างกัน


1

ฉันทำงานเป็นประจำsshdบนพอร์ตที่ไม่ได้มาตรฐาน (เช่นไม่ใช่ 22)

เมื่อsshใช้เครื่องของฉันฉันจะใช้-pธง อย่างไรก็ตามเมื่อใช้scpงานแฟล็กคือ-P(ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่)

เมื่อพวกเขาออกมาจากห้องชุดเดียวกันเหตุใดจึงไม่ใช้ตัวพิมพ์ใหญ่เป็นธงเดียวกัน เป็นเพราะคนสองคนเขียนมันกันหรือเปล่า ไม่ใช้รูปแบบอื่นของ "p" เพื่ออะไร - มันจะไม่สมเหตุสมผลสำหรับพวกเขาที่จะทำงานเหมือนกัน *?


* ฉันรู้ - ฉันสามารถปรับเปลี่ยนแหล่งที่มาและมีแพ็คเกจที่ยอมรับทั้งสองรูปแบบ: แต่นั่นไม่ได้แก้ปัญหาต้นน้ำและฉันจะไม่คาดหวังว่าการส่งแพตช์ของฉันจะทำให้มันเป็นรหัส trunk (แม้ว่าฉันจะให้มัน ยิง)

คำตอบ:


2

ฉันเดา ... และนี่เป็นเพียงการคาดเดา ... คือ -p ถูกใช้โดย rcp สำหรับความหมายปัจจุบันของ "รักษาเวลาการแก้ไขเวลาการเข้าถึงและโหมดจากไฟล์ต้นฉบับ" และเนื่องจาก scp ถูกเขียนขึ้นเพื่อแทนที่ดรอปแบบปลอดภัยสำหรับ rcp มันเป็นสิ่งสำคัญที่จะต้องให้เกียรติธงนั้นเนื่องจาก rcp เข้าใจ นี่หมายความว่าตัวเลือกในการใช้พอร์ตที่ไม่ได้มาตรฐานต้องใช้การตั้งค่าสถานะอื่น

แก้ไข: wrapper ที่เป็นไปได้ในการแปลง -P ถึง -p สำหรับ ssh ควรจัดการกับกรณีทั่วไป แต่ไม่ผ่านการทดสอบอย่างละเอียด เพื่อจัดการกับกรณีที่แปลกประหลาดบางอย่างที่ทำการตีความบรรทัดคำสั่งที่เหมาะสม (เช่นโมดูล Getopt ของ perl) จะดีกว่า

#!/bin/bash

for x in "$@"; do
    if [ "$END"x == "x" ]; then
        case $x in
            "-P") x="-p" ;;
            "--") END=1 ;;
        esac
    fi
    ARGS="$ARGS $x"
done

ssh $ARGS

1
อันที่จริงrcpใช้-pสำหรับ“รักษาเมตาดาต้า” cpและมันไม่เพื่อที่จะเลียนแบบ
Gilles

แน่นอนว่าฟังดูเป็นไปได้
วอร์เรน

แม้ว่า - แล้วคำถามจะยังคงอยู่ทำไมไม่ใช้-Pสำหรับ ssh เช่นกัน
วอร์เรน

ฉันคิดว่า ssh มีอยู่ก่อน scp ... ดังนั้นจะไม่มีเหตุผลที่จะใช้ -P แทน -p แต่การสังเกตนั้นทำให้เกิดจุดง่ายๆ ... มันเป็นเรื่องไม่สำคัญที่จะเขียน ssh wrapper ที่แปลง -P เป็น -p เพื่อให้คุณสามารถใช้ -P ทั้งสองที่ได้ ไม่จำเป็นต้องแฮ็กแหล่งข้อมูล ssh และคอมไพล์อีกครั้ง
Flimzy

1
ฉันอัปเดตคำตอบด้วยเสื้อคลุมที่เป็นไปได้หนึ่งอัน
Flimzy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.