대상 서버의 명령이 반환되지 않도록 SSH 연결을 강제로 닫는 방법

대상 서버의 명령이 반환되지 않도록 SSH 연결을 강제로 닫는 방법

rpm -qa grep httpd대상 호스트 10.9.100.67에서 트리거되는 다음 명령을 생성하고 실행하는 자동화된 도구가 있습니다.

ssh -vvv -o StrictHostKeyChecking=no -o 'IdentityFile="/app/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 10.9.100.67 'rpm -qa | grep httpd' 

참고: 위의 ssh 연결 명령은 제대로 작동합니다. 10.9.50.20(소스)에서 대상 호스트 10.9.100.67로 성공적으로 연결할 수 있습니다.

문제는 서버 10.9.100.67에 있습니다. 10.9.100.67 서버에 로그인하여 시작하면 서버가 rpm -qa | grep httpd멈추고 Ctrl+C퍼티 쉘에서도 도움이 되지 않습니다. Putty 세션을 종료하는 것 외에는 다른 옵션이 없습니다.

이 게시물의 요구 사항은 10.9.100.67의 중단 문제를 해결하는 것이 아닙니다 rpm -qa | grep httpd. 그러나 필요한 것은 ssh명령이 실패하거나 5분 이내에 응답하지 않고 성공하는 경우 10.9의 대상 10.9.100.67에 대한 연결을 닫아야 한다는 것입니다. 50.20 .

명령 시간 초과 옵션도 시도했지만 ssh 컨트롤이 소스를 반환하지 않습니다.

ssh -vvv -o StrictHostKeyChecking=no -o 'IdentityFile="/app/ssh_keys/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ConnectTimeout=8 10.9.100.67 'timeout 5s rpm -qa | grep httpd' 

참고: -o ConnectTimeout=10도움이 되지 않습니다. ssh는 우리가 원하는 10.9.100.67에서 10.9.50.20으로 결코 반환하지 않습니다.

다음 명령은 stackoverflow 도움말에서 가져온 것이지만 pkill이 존재하지 않기 때문에 AiX 시스템에서는 작동하지 않습니다.

ssh 10.9.100.67 '( sleep 60 && kill -9 0 ) 2>/dev/null & rpm -qa | grep httpd; RC=$? ; sleep 1 ; pkill -P $! ; exit $RC'

AIX에서도 작동하는 솔루션을 제공할 수 있습니까?

답변1

원격 호스트에서만 실행 하려는 경우 rpm -qa | grep httpd대체 솔루션이 있습니다. 도구 sshpass. 설치 및 공용 사용은 이 링크를 참고하시면 됩니다.

https://www.tecmint.com/sshpass-non-interactive-ssh-login-shell-script-ssh-password/

관련 정보