SSH 명령에서 "텍스트 반환 없음"에 개행을 추가하는 방법

SSH 명령에서 "텍스트 반환 없음"에 개행을 추가하는 방법

Qt5 애플리케이션에는 다른 원격 시스템(Ssh를 통해 연결된)에 있는 일부 파일의 버전 번호를 확인하기 위해 실행하는 bash 스크립트가 있습니다.

이 스크립트를 실행할 수 있는 컴퓨터가 100대가 넘습니다. 내가 sshed한 컴퓨터에 내가 찾고 있는 파일이 있으면 스크립트 출력이 제대로 표시되지만 원격 컴퓨터에 파일이 없으면 두 줄이 연결됩니다.

예를 들어

다음과 같아야 합니다.

Operating System: 1.5.64 
sw_install: 1.16
Kate 1.1

하지만 원격 파일이 존재하지 않으면

Operating System:  sw_install
Kate: 1.1

원격 파일이 존재하지 않는 경우(존재하는 경우) 줄을 구분하는 방법에 대한 아이디어가 있습니까? 파일이 실제로 존재할 때 출력이 원하는 모양이 아니기 때문에 두 ssh 명령 사이에 "echo" 줄을 넣거나 -n을 제거하고 싶지 않습니다.

매우 간단한 대답이 있기를 바랍니다.

도와주셔서 감사합니다! !

echo -n "Operating System: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt"
echo -n "sw_intall: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' |  head -1"
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \"         Kate:  %{VERSION}.%{RELEASE}\""

센토스 7.2

답변1

cat을 파이프 tr -d '\n'하고 명령 뒤에 명시적으로 줄바꿈을 추가할 수 있습니다.

답변2

echo전혀 사용하지 마십시오. 명시적으로 개행 문자를 사용 printf하고 추가하세요. 이것을 변경하십시오:

echo -n "Operating System: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt"
echo -n "sw_intall: "
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' |  head -1"
ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \"         Kate:  %{VERSION}.%{RELEASE}\""

이와 관련하여:

os=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt")
swInstall=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' |  head -1")
kate=$(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \"         Kate:  %{VERSION}.%{RELEASE}\"")

printf 'Operating System: %s\nsw_intall: %s\nKate: %s\n' "$os" "$swInstall" "$kate"

또는 구분 기호를 사용하세요.

cat<<EoF
Operating System: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "cat /home/user/Version.txt")
sw_install: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "grep VERSION= /home/user/sw_install | cut -d'=' -f2 | tr -d '\"' |  head -1")
Kate: $(ssh -t -o LogLevel=QUIET -o '''StrictHostKeyChecking no''' $NODENAME "rpm -qv kate --qf \"         Kate:  %{VERSION}.%{RELEASE}\"")
EoF

관련 정보