Clustersh: SSH 옵션 전달

Clustersh: SSH 옵션 전달

Clustersh(cssh)는 SSH에 옵션을 전달할 수 있습니다.

cssh -o "-o ConnectTimeout=1" myserver.mydomain.org

ProxyCommand옵션을 전달하려고 시도했지만 ssh작동하지 않습니다. plain 의 경우 ssh다음을 사용할 수 있습니다.

ssh -o ProxyCommand='ssh [email protected] nc %h %p' behind-fw.mydomain.org

non-routable.mydomain.org을 통해 서버에 연결 됩니다 1.2.3.4. 그러나 내가 그것을 사용하려고 할 때 cssh:

cssh -o "-o ProxyCommand='ssh [email protected] nc %h %p'" non-routable.mydomain.org

다음 오류가 발생합니다.

Cannot open pipe for reading when talking to non-routable.mydomain.org : Interrupted system call

ProxyCommandcssh에 어떻게 전달할 수 있나요 ?

답변1

옵션에 공백을 전달하려면 Perl 스크립트가 따옴표와 큰따옴표를 처리하는 방법을 이해해야 합니다 cssh. 이를 수행하는 쉬운 방법은 내장된 디버깅 옵션을 사용하는 것입니다. 레벨 2에서는 실행 중인 xterm 명령이 표시됩니다. 이는 매우 복잡하며 작은따옴표로 묶인 인라인 Perl 스크립트로 구성됩니다. 스크립트 내에서는 변수를 큰따옴표로 묶인 문자열로 설정합니다. 따라서 -o "-o 'x y'"실행 중인 옵션을 제공하면 다음과 같습니다 .

xterm ... -e perl -e ' ... my $command="ssh -o 'x y'"; ... '

이렇게 하면 Perl 스크립트가 두 단어로 분할되므로 작동하지 않습니다.

큰 따옴표를 사용 -o "-o \"x y\""하면

... my $command="ssh -o "x y"";

이로 인해 Perl 할당이 손상되어 x y문자열 외부에 배치됩니다.

마지막으로 작은따옴표를 사용하고 큰따옴표를 이스케이프 처리하면 -o '-o \"x y\"'제대로 작동합니다.

... my $command="ssh -o \"x y\"";

관련 정보