Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用ssh execute命令从自动执行用户登录获取输入_Linux_Bash_Shell_Ssh_Paramiko - Fatal编程技术网

Linux 使用ssh execute命令从自动执行用户登录获取输入

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 我不想对脚本做任何更改

我有一台Linux远程机器,在尝试登录时运行脚本,它将运行脚本,并且它需要用户输入

主要目的是测试登录用户,当登录到该用户时,远程测试带有自动脚本响应的密码

远程计算机内部的信息:

$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')