Shell脚本自动SonicWall防火墙SSH会话不工作



我试图编写一个shell脚本(Bash)来登录到SonicWall防火墙设备并发出命令来执行设备规则集的自动备份。我更喜欢在Bash中这样做,但我也接受python、perl、except或applescript解决方案。如果不能在bash中完成,请提及。

问题:

1)。防火墙上的SSH服务器是自定义的,必须在发出

后指定用户名和密码。
$ ssh server.com

所以无论你的用户名是什么,例如

$ ssh admin@server.com

SSH服务器仍然在

后面显示用户名和密码框

2)。SSH服务器很小,我不能使用公钥

我尝试使用这里的文档,但它不工作,它导致立即"连接被远程主机关闭"。

我需要执行的命令是这样的:

export preferences ftp "ftp.server.com" "user1" "mypassword" "output.exp"

连接给了我这个:

$ ssh admin@server.com

Copyright (c) 2010 SonicWALL, Inc. 
User:    

发出用户名后,会显示密码提示:

User:user1
Password:

我试了一下这里的文档,但无济于事。

$ ssh server <<+
user1
mypassword
export preferences ftp "ftp.server.com" "user1" "mypassword" "output.exp"
exit
+ 
Pseudo-terminal will not be allocated because stdin is not a terminal.
Connection to 10.1.1.1 closed by remote host.

我尝试使用echo来管道命令,但这也不工作。

手动输入命令就可以了。

如果有任何帮助,我将不胜感激。

正如其他人所建议的,expect可能是您想在这里使用的。

下面是一个关于如何从bash开始使用它的简短示例:

login=root
IP=127.0.01
password=helloworld
# +whatever variables you need to use
# Run the expect script from bash
expect_sh=$(expect -c "
spawn ssh $login@$IP
expect "password:"
send "$passwordr"
expect "#"
send "cd $dest_dirr"
expect "#"
send "chmod +x $server_side_script $other_scriptr"
expect "#"
send "./$device_side_scriptr"
expect "#"
send "cat results_filer" 
expect "#"
send "exitr"
")
# Output or do something with the results
echo "$expect_sh"

您可以使用原始的expect自动执行ssh会话,这里有一篇详细讨论它的好文章:http://solar1.net/drupal/automating%20SSH%20with%20expect或Python模块pexepect: http://linux.byexamples.com/archives/346/python-how-to-access-ssh-with-pexpect/

我不是BASH专家,但我必须做一些交互式密码提示导致我的问题。

基本上,您的脚本需要等待被要求输入登录凭据,并在提示时传递它们以便登录,一旦登录,您可以发出命令。

我建议看看刷出"期望"会话。基本上在你的脚本中,你使用expect基本上说"我希望看到密码:在响应中,当我这样做时,我需要传递以下数据"。

这里是wiki页面,帮助解释http://en.wikipedia.org/wiki/Expect

如果你谷歌一下,你会发现很多帮助。

这对我不起作用。

我必须在启动时将变量传递给脚本。

示例启动脚本login2.sh,有三个参数:

bash - 4.1美元。/login2.sh Jan2 * * * * HIE_SUPER 10.244.112.182

相关内容

  • 没有找到相关文章

最新更新