R - 通过ssh连接并执行命令

时间:2016-01-05 12:44:22

标签: r linux bash networking ssh

我想通过ssh连接到网络中的某些设备。

必要条件是:

  1. 它必须运行一个命令并在R中捕获ssh会话的输出(或者用bash或任何其他编程语言,但我更喜欢用R语言)

  2. 必须输入明文密码(因为之前没有访问此设备,并且无法使用rsa密钥对进行更改),因此ssh.utils包不会输入#39; t满足此要求

  3. sshpass无法使用,因为我注意到它对我测试的某些设备不起作用。

  4. 我已阅读所有这些帖子,但我找不到有效的方法来执行此操作:link 1link 2link 3link 4

    我知道要求很难完成,但谢谢你的努力!

    修改

    对不起,如果我没有让自己理解。我的意思是我在R本地工作,我想通过ssh连接到我所有网络中的+3000设备。它是Ubiquiti设备,唯一的开放端口是80和22.

    如果ssh不起作用,我将使用RSelenium包来获取R并从端口80中提取信息。但首先我会尝试使用ssh pory 22,因为它比打开一个更有效率模拟浏览器。

    所有这些Ubiquiti设备的一个大问题是他们有一个密码可以登录。这就是为什么需要必备的No.2。当我必须进入我认识的服务器时,我花时间设置rsa密钥对,以便每次连接到特定服务器时都不必输入密码,但这是不可能的(或者至少,对我来说,用这些密钥对配置所有+3000 Ubiquiti设备是不可能的。

    这就是为什么我不使用snmp,例如,因为这个设备可能已经激活或没有激活,或者snmp配置是错误的。我的意思是,我必须使用默认激活的东西,并且在某种程度上是有序的。只有端口80和端口22被激活,我知道所有用户和密码的设备。

    sshpass是UNIX / Linux like this link explains中的一个实用程序,适用于服务器,但对于Ubiquiti设备不起作用,只要我对其进行了测试。所以我无法使用它。

    我需要从mca-status中提取输出的命令。只需将其输入控制台,就可以打印出我想从Ubiquiti设备获得的一些统计数据。

    如果我在发布的内容中出错,请告诉我。感谢。

2 个答案:

答案 0 :(得分:1)

我认为你错了。我也不知道你在第2点想说什么,我不知道第3点应该说什么。

现在:ssh是一种身份验证机制,允许您(可信)访问另一台计算机并运行命令。这可以像

一样简单
edd@max:~$ ssh bud Rscript -e '2+2'
[1] 4
edd@max:~$ 

我从机器'max'(我的服务器)上的会话中调用机器'bud'(我的桌面)上的R(或者更确切地说,Rscript)。该命令可以是任何,包括写入临时或永久文件的内容。然后,您可以通过scp检索这些文件。

身份验证是独立处理的 - 在Unix上,我们经常使用在后台运行的ssh-agent,并在登录时对您进行身份验证。

答案 1 :(得分:1)

最后我使用echo '## Your distribution, identified as "wily", is not currently supported, please contact NodeSource at https://github.com/nodesource/distributions/issues if you think this is incorrect or would like your distribution to be considered for support' Fatal error: sudo() received nonzero return code 1 while executing! Requested: /bin/bash -x /tmp/setup.sh Executed: sudo -S -p 'sudo password:' /bin/bash -l -c "/bin/bash -x /tmp/setup.sh" 包和python的rPython模块解决了它,因为没有办法纯粹通过R来完成。

paramiko