在远程计算机上执行ssh操作时如何在lua脚本中自动提供密码

时间:2018-07-28 12:03:21

标签: linux lua

不使用sshpass,sshkeys可以通过任何方式对远程计算机执行ssh并仅通过lua脚本提供密码,还可以在sshing之后在远程计算机的后台运行shell命令。 执行os.execute('ssh user@192.168.14.81')后如何自动获取密码

1 个答案:

答案 0 :(得分:0)

该功能不应该那样使用。实际上,os.executeio.popen并不是要完全使用。它们是准系统命令,适用于您需要执行本不应该以这种方式工作但确实需要执行的操作。

它们都基于标准C库,没有太多可用。出于安全原因,ssh正在以某种不太标准的方式处理与用户的交互。通常,您将不得不使用非标准库,例如luaposix,或附加一些C ++库以进行系统交互。

关于ssh,有python库parallel-ssh。较旧的版本通过难看的输出解析来完成任务,较新的版本似乎重新实现了整个协议。有了足够的欲望,就有可能利用lua的那些。或者只是使用python完成任务。

对于与进程进行lua交互的特殊性,您可以尝试使用此代码(将其放入文件中,如果尝试将其粘贴到终端中将阻塞标准输入)

f=io.popen([[
    echo "this will show only on f:read";
    echo "now here's your line"; 
    read var; echo $var
]]); 
print('this will print before bash command finishes, now type something'); 
f:write('This will be ignored completely')
print(f:read('*a')); 
print('This will print after the bash command');  
f:close()