Linux 使用ssh execute命令从自动执行用户登录获取输入
我有一台Linux远程机器,在尝试登录时运行脚本,它将运行脚本,并且它需要用户输入 主要目的是测试登录用户,当登录到该用户时,远程测试带有自动脚本响应的密码 远程计算机内部的信息:Linux 使用ssh execute命令从自动执行用户登录获取输入,linux,bash,shell,ssh,paramiko,Linux,Bash,Shell,Ssh,Paramiko,我有一台Linux远程机器,在尝试登录时运行脚本,它将运行脚本,并且它需要用户输入 主要目的是测试登录用户,当登录到该用户时,远程测试带有自动脚本响应的密码 远程计算机内部的信息: $cat/etc/passwd remoteuser:dontcare:dontcare:dontcare:dontcare:/usr/bin/somescript.sh 当用户登录到remoteuser时,somescript.sh将运行 请求用户输入的脚本内容 $read-p'>'tmp 我不想对脚本做任何更改
$cat/etc/passwd
remoteuser:dontcare:dontcare:dontcare:dontcare:/usr/bin/somescript.sh
当用户登录到remoteuser时,somescript.sh将运行
请求用户输入的脚本内容
$read-p'>'tmp
我不想对脚本做任何更改
登录示例
login: remoteuser
Password: remoteuserpassword
Quit Configuration (q, quit)
我是否可以使用ssh命令发送用户输入?
目前我的方法是使用paramiko ssh
使用exec_命令连接=paramiko.SSHClient()
但它仍然无法按正确的顺序发送输入,或者无法传递到该脚本
$echo q
到paramiko exec连接.exec_命令('echo q')
我没有使用root登录来测试这个远程用户,因为它不要求密码
echo q|su-远程用户
我是否可以使用ssh命令发送用户输入
不,除非你改变脚本。SSH将您的脚本作为用户shell处理(除非您在sshd\u config
中还有其他配置),这意味着如果您提供了一些参数,它将使用以下参数运行脚本:
/usr/bin/somescript.sh -c "command"
这与在用户shell中使用/usr/bin/bash-c“commnad”
运行任何其他任意命令的方式相同。就你的情况来看
/usr/bin/somescript.sh -c "echo q"
但脚本的参数很可能被忽略。您的脚本等待标准输入上的命令,我相信您也可以在Paramiko中提供该输入。我最后使用了
并执行该命令
execute(remoteuser_login, host='ipaddress')
我的主要目的是在登录到该用户时使用自动脚本响应测试登录用户和密码。
execute(remoteuser_login, host='ipaddress')