我是使用批处理的新手,所以我不确定我是否可以尝试做什么,但是,情况是我有几个需要使用SSH管理的交换机。我目前正在使用plink(putty)通过命令提示符这样做。我能够连接到我的交换机,但我对如何自动化登录部分感到困惑。
我想弄清楚的是,当我连接到交换机时,我停止了3次并要求输入,一次用户名,再次用户名(我不知道为什么两次)然后最后输入密码。在我真正可以在交换机上运行命令之前,所有这一切。
因此,在我古老的批处理文件中,我正在尝试执行以下操作。
echo
plink SESSIONNAME -l username -pw password
enable
config
crypto key generate rsa
然而,交换机不希望与plink合作接受输入用户名和pw,而是提示我将相同的信息输入cmdprompt。有没有办法让它“等待”交换机提示我输入用户名然后输入它,然后“等待”交换机提示我输入密码并输入它?所有在执行我想要的命令之前?
我所做的每一次搜索都只给了我相反的结果,批处理文件会提示用户输入,而不是连接到提示输入的任何内容。
可能我只是没有意识到要搜索的正确条款,如果是这样的话请告诉我,以便我可以重做我的研究。我只是在某个地方,我不确定该去哪里或者要问什么。
Plink日志输出
User Name:USERNAME
Password:PASSWORD
source#
其他
Looking up host "X"
Connecting to X port 22
Server version: SSH-2.0-OpenSSH_3.4p1.RL
We believe remote version has SSH-2 channel request bug
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.66
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 XXXXXXX
Initialised AES-256 CBC client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 CBC server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Using username "USERNAME".
Access granted
Opening session as main channel
Opened main channel
Allocated pty (ospeed 38400bps, ispeed 38400bps)
Started a shell/command
答案 0 :(得分:0)
对于可能遇到同样问题的人,我最终需要设置一个linux盒子(在我的情况下是ubuntu),然后安装expect, sudo apt-get install expect ,然后创建一个解决这个问题的脚本。语法相当简单,我的结果类似于下面的内容。我找到的有用资源的链接就在下面。更具体地说,它们是戴尔PowerConnect交换机,介于3400,3500和6200系列之间。
#!/usr/bin/expect
spawn /usr/bin/plink -ssh HOST
expect -exact "User Name:"
send "USERNAME\r"
expect -exact "Password:"
send "PASSWORD\r"
send "whatevercommandsyouwant\r"
send "exit\r"
expect eof
它并不完美,但它大大减少了更新交换机或收集配置信息所花费的时间。