원격 컴퓨터에서 명령을 실행하고 싶습니다. 원격 사용자는 비밀번호 인증이 필요합니다. 다음 샘플 스크립트를 사용할 때 다음 오류가 발생합니다. 이는 샘플 스크립트 applmgr.sh의 내용입니다.
#!/bin/bash
ssh [email protected] -c "cd ; touch testing ; cp testing testing_is ;mv testing
working" <<!
applmgr ## Password of applmgr user##
!
실행되면 다음과 같은 메시지가 나타납니다.
[oracle@dbsrvr ~]$ sh applmgr.sh
standard in must be a tty
답변1
스크립트에 비밀번호를 입력하는 것은 매우 잘못된 보안 관행입니다. 하지만 만약 당신이~ 해야 하다그 이유는 이러한 목적으로 이와 같은 도구를 사용할 수 있기 때문입니다 sshpass
.
그러나 이러한 작업에는 키 쌍 인증 사용을 고려하는 것이 좋습니다.
호스트 시스템에 있고 a.example.com
실행할 작업이 있는 경우 b.example.com
다음 명령을 사용하여 설정할 수 있습니다.
ssh-keygen
- 인증을 위한 공개/개인 키 쌍이 생성됩니다.ssh-copy-id [email protected]
- 원격 호스트에서 사용할 공개 키를 설정합니다. 이 명령을 실행하면 비밀번호를 묻는 메시지가 표시되지만 이후에는 인증에 키가 사용됩니다.
그 시점부터 예를 들어 원격 호스트에서 실행할 수 있습니다.ssh [email protected] 'command'
command
답변2
expect
애플리케이션과 상호작용하고 사용자 행동을 시뮬레이션하기 위해 구축된 시스템인 명령을 살펴보세요 .
(물론 비밀번호를 버리고 키를 사용하는 것이 진정한 해결책입니다)