SSH를 통해 관리할 수 있는 내장 장치(Perle IOLAN+, 이더넷-직렬 어댑터)가 있습니다. 때로는 이 장치에 로그인하여 명령을 실행해야 할 때도 있습니다. SSH를 통한 로그인, 대화형 셸 가져오기, 명령 실행은 모두 원활하고 잘 작동했습니다.
그러나 프로세스를 자동화하고 정기적으로 로그인하여 이 명령을 실행하는 스크립트를 내 서버에 두고 싶습니다. SSH를 통해 원격으로 할 수 있는지 테스트 중인데 할 수 없는 것 같습니다.
내가 실행하고 싶은 명령은 kill line *
내 서버에서 입니다 ssh user@device_host kill line *
. 하지만 예상했던 결과는 나오지 않았습니다. 시도하면 장치의 대화형 셸에서는 제대로 작동 ssh user@device_host uptime
하지만 출력이 나오지 않습니다 .uptime
장치는 완전하게 작동하는 운영 체제를 실행하지 않습니다. 이는 몇 가지 사용 가능한 명령만 포함된 일종의 내장형 *nix입니다. SSH 서버가 원격 명령 실행을 인식하지 못하는 것이 가능한지 궁금합니다. 확인할 수 있는 방법이 있나요? Lite SSH 서버에는 이 기능이 부족한 경우가 많나요?
대화형 셸을 거치지 않고 원격으로 명령을 실행하는 또 다른 방법이 있습니까?
-vv를 사용한 ssh의 출력은 다음과 같습니다.
$ ssh -vv user@remote_host 가동 시간 OpenSSH_6.4, OpenSSL 1.0.1e-fips 2013년 2월 11일 debug1: 구성 데이터 읽기/etc/ssh/ssh_config debug1: /etc/ssh/ssh_config 줄 51: * 옵션 적용 디버그 2: ssh_connect: needpriv 0 debug1: Remote_host[remote_host] 포트 22에 연결합니다. debug1: 연결이 설정되었습니다. debug1: ID 파일 /home/raven/.ssh/id_rsa type-1 debug1: ID 파일 /home/raven/.ssh/id_rsa-cert type-1 debug1: ID 파일 /home/raven/.ssh/id_dsa type-1 debug1: ID 파일 /home/raven/.ssh/id_dsa-cert type-1 debug1: ID 파일 /home/raven/.ssh/id_ecdsa type-1 debug1: ID 파일 /home/raven/.ssh/id_ecdsa-cert type-1 debug1: 프로토콜 2.0의 호환 모드를 활성화합니다. debug1: 로컬 버전 문자열 SSH-2.0-OpenSSH_6.4 debug1: 원격 프로토콜 버전 2.0, 원격 소프트웨어 버전 OpenSSH_5.9 debug1: 일치: OpenSSH_5.9 및 OpenSSH_5* debug2: fd 3 O_NONBLOCK 설정 debug1: SSH2_MSG_KEXINIT가 전송되었습니다. debug1: SSH2_MSG_KEXINIT 수신됨 디버그 2: kex_parse_kexinit: ---- 잘림 - 많은 kexinit 메시지---- debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: 예약됨 0 debug2: mac_setup: hmac-md5를 찾았습니다. debug1: kex: 서버->클라이언트 aes128-cbc hmac-md5 없음 debug2: mac_setup: hmac-md5를 찾았습니다. debug1: kex: 클라이언트->서버 aes128-cbc hmac-md5 없음 debug1: SSH2_MSG_KEX_ECDH_INIT를 보냅니다. debug1: SSH2_MSG_KEX_ECDH_REPLY 예상 debug1: 서버 호스트 키: RSA 6c:4c:41:a3:d2:04:66:a1:e8:66:2d:35:4c:79:6a:98 debug1: 호스트 "remote_host"가 알려져 있으며 RSA 호스트 키와 일치합니다. debug1: /home/raven/.ssh/known_hosts:4에서 키가 발견되었습니다. debug1: ssh_rsa_verify: 서명이 정확함 디버그 2: kex_derive_keys debug2: set_newkeys: 모드 1 debug1: SSH2_MSG_NEWKEYS가 전송되었습니다. debug1: SSH2_MSG_NEWKEYS가 필요합니다. debug2: set_newkeys: 모드 0 debug1: SSH2_MSG_NEWKEYS 수신됨 debug1: 서버가 로밍을 허용하지 않습니다. debug1: SSH2_MSG_SERVICE_REQUEST가 전송되었습니다. debug2:service_accept:ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT를 받았습니다. debug2: 키: /home/raven/.ssh/id_rsa ((nil)), debug2: 키: /home/raven/.ssh/id_dsa ((nil)), debug2: 키: /home/raven/.ssh/id_ecdsa ((nil)), debug1: 계속할 수 있는 인증: 공개 키, 비밀번호, 키보드 상호 작용 debug1: 다음 인증 방법: publickey debug1: 개인 키를 사용해 보세요: /home/raven/.ssh/id_rsa debug1: 개인 키를 사용해 보세요: /home/raven/.ssh/id_dsa debug1: 개인 키를 사용해 보세요: /home/raven/.ssh/id_ecdsa debug2: 패킷을 보내지 않습니다. 메서드를 비활성화합니다. debug1: 다음 인증 방법: 키보드 상호 작용 디버그 2: userauth_kbdint debug2: 키보드 상호작용 패킷을 보냈고 응답을 기다리고 있습니다. 디버그 2: input_userauth_info_req debug2: input_userauth_info_req: num_prompts 1 비밀번호: 디버그 2: input_userauth_info_req debug2: input_userauth_info_req: num_prompts 0 debug1: 인증에 성공했습니다(키보드 상호 작용). Remote_host([remote_host]:22)에 인증되었습니다. debug1: 채널 0: 새 [클라이언트 세션] debug2: 채널 0: 보내기 debug1: 요청[이메일 보호됨] debug1: 대화형 세션에 들어갑니다. debug2: 콜백 시작 debug2: fd 3 TCP_NODELAY 설정 debug2: client_session2_setup: ID 0 debug1: 환경을 보냅니다. debug1: 전송 환경 LANG = en_GB.UTF-8 debug2: 채널 0: 환경 확인 요청 0 debug1: 명령 보내기:가동 시간 debug2: 채널 0: 실행 확인 요청 1 debug2: 콜백 완료 debug2: 채널 0: 열기 확인 rwindow 0 rmax 32768 debug2: 채널 0: rcvd 조정 2097152 debug2: 채널_input_status_confirm: 유형 99 ID 0 debug2: 채널 0에서 실행 요청 수락 debug1: client_input_channel_req: 채널 0 rtype 종료 상태 응답 0 debug1: client_input_channel_req: 채널 0 rtype[이메일 보호됨]답글 0 debug2: 채널 0: rcvd eow debug2: 채널 0: close_read debug2: 채널 0: 입력 켜기 -> 끄기 debug2: 채널 0: rcvd eof debug2: 채널 0: 출력 켜기 -> 드레인 debug2: 채널 0: obuf 비어 있음 debug2: 채널 0: close_write debug2: 채널 0: 출력 드레인 -> 꺼짐 debug2: 채널 0: rcvd가 닫혔습니다. debug2: 채널 0: 거의 죽었습니다. debug2: 채널 0: gc: 사용자에게 알림 debug2: 채널 0: gc: 사용자 분리됨 debug2: 채널 0: 닫힌 보내기 debug2: 채널 0: 작동하지 않음 debug2: 채널 0: 가비지 수집 debug1: 채널 0: 유휴: 클라이언트 세션, nchannels 1 전송됨: 전송된 2472바이트, 수신된 1816바이트, 0.8초 초당 바이트 수: 전송 3032.4, 수신 2227.7 debug1: 종료 상태 0
답변1
그 ssh user@device_host kill line *
안의 "*"는 서버로 전송되기 전에 로컬 쉘에 의해 해석됩니다. 다음과 같이 명령을 인용해야 합니다.
ssh user@device_host 'kill line *'