我想通过SSH连接到networking中的某些设备。
必要条件是:
它必须input一个纯文本密码(因为这个设备以前没有被访问过,所以不能用rsa密钥对来修改),所以ssh.utils
软件包不符合这个要求
sshpass
不能使用,因为我注意到它不适用于我testing的一些设备。
我已阅读所有这些post,但我找不到一个有效的方式来执行它: 链接1 , 链接2 , 链接3 , 链接4
我知道要求很难完成,但感谢您的努力!
编辑:
对不起,如果我没有让自己理解。 我的意思是我在R本地工作,我想通过SSH连接到我所有networking中的+3000设备。 它是Ubiquiti设备,唯一的开放端口是80和22。
如果ssh不起作用,我将使用R的RSelenium
软件包,并从端口80中提取信息。但首先我会尝试使用ssh pory 22,因为它比打开模拟浏览器更有效率。
所有这些Ubiquiti设备的大问题是,他们有一个密码login。这就是为什么需要2号。 当我必须进入我知道的服务器时,我花时间设置rsa密钥对,以便每次连接到特定的服务器时不必input密码,但这是不可能的(至less对我来说是不可能的)用这些关键字configuration所有+3000 Ubiquiti设备。
这就是为什么我不使用snmp的原因,例如,因为这个设备可能会激活它,或者snmpconfiguration是错误的。 我的意思是,我必须使用默认激活的东西,并以某种方式sorting。 只有端口80和端口22被激活,我知道所有的用户和密码的设备。
而sshpass
是UNIX / Linux中的一个实用程序, 就像这个链接解释说 ,它适用于服务器,但不适用于Ubiquiti设备,只要我已经testing过了。 所以我不能使用它。
我需要从中提取输出的命令是mca-status
。 简单地通过input到控制台使它打印一些统计数据,我想从Ubiquiti设备。
请纠正我,如果我错了我已经发布的东西。 谢谢。
我想你有这个错误。 我也不知道你在第二点要说什么,我不知道第三点应该说什么。
现在: ssh
是一个身份验证机制,允许您(可信)访问另一台机器并运行命令。 这可以像
edd@max:~$ ssh bud Rscript -e '2+2' [1] 4 edd@max:~$
我在机器“max”(我的服务器)上的一个会话上调用机器“bud”(我的桌面)上的R
(或者说Rscript
)。 该命令可以是任何东西,包括写入临时或永久文件的东西。 然后您可以通过scp
来检索这些文件。
身份验证是独立处理的 – 在Unix上,我们经常使用在后台运行的ssh-agent
,并在登录时对您进行身份验证。
最后,我使用rPython
包和python的paramiko
模块解决了rPython
问题,因为没有办法通过R来完成。
library(rPython) python.exec(python.code = c("import paramiko", "ssh = paramiko.SSHClient()", "ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())", sprintf('ssh.connect("%s", username="USER", password="PASSWORD") ', IP), 'stdin, stdout, stderr = ssh.exec_command("mca-status")', 'stats = stdout.readlines()'))