Ubuntu 서버의 SSH 매개 변수 도움말


1

다음과 같은 변수 설정이 있습니다.

SSH_EXEC="ssh -X -o ControlPath=~/.ssh/master-$$ -o ControlPersist=60"

문제의 매개 변수는입니다. -X로컬 스크립트 내 에서이 명령을 호출하면

$SSH_EXEC user@server "./server_script.sh $aFile"

간단히 말해서 다음을 수행합니다.

if [ -e /path/"$1".name ] || [ -e /path/"$1" ]
then 
   do something
else
   error
   echo "/path/"$1".name"
   exit
fi  

모든 것이 작동합니다! 내가 대체하지만 만약 -X-t내는 server_script받는 사람 실패 else테스트에. x11을 사용하지 않으려 고하지만 차이점이 무엇인지 한 인스턴스에서 실패하고 다른 인스턴스로 전달되는지 확실하지 않습니다.

편집하다

그래서 방금 더 많은 문제 해결 /path/$1.name을 수행하고 서버 의 가치를 반향하기로 결정했으며 정크가 깨졌습니다. 내 $aFile이름이 hello.name에코 표시의 결과 인 경우 대신 대신 .nameello사용할 때 경로의 시작을 제거합니다 . -t-X

변수가 손상되는 원인은 무엇입니까?


X11을 사용하지 않습니다. 어떤 경우에는 X11 포워딩을 활성화하고 다른 경우에는 의사 tty를 강제로 생성합니다. 또한, "간단히"코드에는 문제가 무엇인지 알려주는 데 충분하지 않습니다 (에코조차 포함되지 않음).
Hasturkun 2016 년

@Hasturkun 위의 예제를 조금 더 수정했습니다. "간단히"있는 것은 코드가 실패하는 곳입니다. 긴 서버 스크립트의 시작 부분에 있습니다.
hax0r_n_code 2016 년

일종의 어리석은 제안이지만 ssh 명령의 출력을 xxd비슷하게 또는 유사하게하면 어떻게됩니까?
Hasturkun 2016 년

@Hasturkun 바보 같은 질문이 아닙니다! 나는 무엇인지 모른다 xxd, 당신은 정교한 수 있습니까?
hax0r_n_code 2016 년

육각 덤프. 예를 들어 출력에 제어 문자가 있다고 생각합니다. ^H(백 스페이스) 쉘 출력에 전에 문자를 삭제합니다. 16 진 덤프에서 볼 수 있습니다. 이 경우에, 나의 심령 힘은 그것이 ^M말미에 (캐리지 리턴) 이라고 말해줍니다$aFile
Hasturkun

답변:


2

이 변수 $aFile에는 후행 캐리지 리턴 문자 가있을 수 있으며 , 터미널이 발견되면 줄의 시작으로 돌아갑니다.

예를 들면 다음과 같습니다.

echo "/path/"hello^M".name"

출력 :

/.namehello

일이 이런 종류의 도스와 쉘 스크립트로 인해 발생할 수있는 줄 끝에 같은 라인을 유발,

aFile = "hello"

로 해석된다

aFile = "hello"^M

이 경우 dos2unix유틸리티를 사용하여 Unix 줄 끝을 사용하도록 스크립트를 변환 할 수 있어야 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.