스크립트를 통해 원격 서버에 로그인하는 동안 std 입력을 전달하는 방법

스크립트를 통해 원격 서버에 로그인하는 동안 std 입력을 전달하는 방법

내 원격 서버에 로그인하는 동안 사용자 입력이 필요하지만 bash_profile은 그런 방식으로 수정됩니다.

[nikhil]$ cat .bash_profile
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi
read -p "enter your name " Name
echo $Name

SSH를 사용하여 이 원격 서버에 로그인하고 해당 입력을 스크립트를 통해 전달하려면 어떻게 해야 합니까?

답변1

설치하다 expect:

apt-get install expect

다음 스크립트를 실행하십시오.

$ expect <<EOF
set timeout -1

spawn ssh -o "StrictHostKeyChecking=no" root@server

expect "root@server's password:"
send -- "12345678PASSWORD\r"
expect "enter your name "
send -- "susan\r"
expect "root@server"
send -- "echo $$\r"
send -- "exit\r"
expect eof
EOF

다음을 조정하십시오.

  • root@server실제 서버 연결 매개변수로
  • 분명히 비밀번호는
  • .bash_profile대상 서버 내부의 스크립트에 제공하려는 이름
  • 대상 서버에서 실행하려는 실제 명령( 대신 echo $$)

관련 정보