1

Я обычно запускаю sshd на нестандартном порту (т.е. не на 22).

Когда ssh -ing на моей машине, я использую флаг -p . Однако при использовании scp флаг -P (строчные и прописные).

Поскольку они выходят из одного и того же набора, почему бы тогда не использовать одинаковый флаг-заглавные буквы? Это действительно только потому, что два разных человека написали это? Ни один из них не использует другую форму "p" - разве не имело бы смысла работать одинаково *?


* Я знаю - я мог бы изменить исходный код и иметь пакет, который принимал бы обе формы: но это не решило проблему с исходным кодом, и я не ожидал, что отправка моего патча когда-нибудь попадет в код транка (хотя я буду давать его) выстрел).

1 ответ1

2

Мое предположение ... и это только предположение ... заключается в том, что -p уже использовался rcp для текущего значения "Сохраняет время изменения, время доступа и режимы из исходного файла". И так как scp был написан, чтобы быть безопасной заменой rcp, важно было соблюдать этот флаг так, как это понимает rcp. Это означало, что вариант использования нестандартного порта должен был использовать другой флаг.

РЕДАКТИРОВАТЬ: Возможная оболочка для преобразования -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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .