저는 Expect 명령을 사용하여 암호를 제공하는 작은 스크립트를 작성하고 있습니다. 목적은 스위치에 로그인하여 명령을 받는 것입니다. 운영 체제: RHEL 7. 클라이언트 네트워크에 로그인하기 위한 작은 애플리케이션 프록시체인이 있습니다. 따라서 먼저 이를 열고 명령(ssh 등)을 실행해야 합니다.
예를 들어:
[ram@abcde scripts]$ /usr/bin/proxychains ssh [email protected]
ProxyChains-3.1 (http://proxychains.sf.net)
|S-chain|-<>-129.39.159.150:1080-<>-138.222.124.15:1080-<><>-10.49.99.49:22-<><>-OK
[email protected]'s password:
Expect를 사용하여 위 작업을 자동화하려고 하므로 다음 스크립트가 있는데 오류가 발생합니다.
set user "admin"
set password "sample123"
/usr/bin/proxychains ssh [email protected]
expect "ssword: "
send "$password\r"
expect ">\r"
send "switchshow\r"
expect eof
다음과 같은 오류가 발생합니다.
[ram@abcde scripts]$ sh br1.sh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port]
[-Q cipher | cipher-auth | mac | kex | key]
[-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] [user@]hostname [command]
br1.sh: line 3: ProxyChains-3.1: command not found
couldn't read file "ssword: ": no such file or directory
br1.sh: line 5: send: command not found
couldn't read file ">\r": no such file or directory
br1.sh: line 7: send: command not found
couldn't read file "eof": no such file or directory
답변1
SSH와 함께 SSHPASS를 사용하세요. 통사론:
sshpass -p 'password' ssh user@domain/ip "command"