Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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不带密钥,并使用bash脚本收集输出_Linux_Bash_Ssh_Expect - Fatal编程技术网

Linux ssh不带密钥,并使用bash脚本收集输出

Linux ssh不带密钥,并使用bash脚本收集输出,linux,bash,ssh,expect,Linux,Bash,Ssh,Expect,我想创建一个bash脚本,它将使用ssh登录到我网络中的所有linux服务器,并将“uptime”命令的输出收集到本地文件中。这些本地服务器和远程服务器之间没有安装密钥对。所以我需要在脚本本身中提供密码(用户名和密码对于所有远程服务器都是相同的)。我知道这不是一种安全的方法,但它只是为了学习。我看到'expect'命令可以用于ssh登录,但不知道如何将其与提供服务器状态的'uptime'命令一起使用。所以我的要求是 1. I have local server test1 which conta

我想创建一个bash脚本,它将使用ssh登录到我网络中的所有linux服务器,并将“uptime”命令的输出收集到本地文件中。这些本地服务器和远程服务器之间没有安装密钥对。所以我需要在脚本本身中提供密码(用户名和密码对于所有远程服务器都是相同的)。我知道这不是一种安全的方法,但它只是为了学习。我看到'expect'命令可以用于ssh登录,但不知道如何将其与提供服务器状态的'uptime'命令一起使用。所以我的要求是

1. I have local server test1 which contains a text file 'server_status.txt' 
2. I need a script in test1 that will try to login to all the remote servers (say 192.168.0.1 to 192.168.0.50) using the same username and password. It will execute the command 'uptime' once logged in to the remote servers and store the output to the local file 'server_status.txt'

撤销:将公钥粘贴到服务器的
/path2用户中,该用户应登录.ssh/authorized_keys
,并使用
ssh远程运行命令user@host命令执行

由于连接需要在没有密钥的情况下建立。
更新:查看您是否真的需要密码,这是不推荐的

注意:这样做是不好的做法。如果你正在测试这一点,那么你正在学习一个坏习惯。不要在您关心的服务器上进行生产

您将希望以
$?
的形式执行
expect
调用,并确保存储
$USER
$SERVER
变量或仅替换它们:

uptime=$(expect -c 'spawn ssh $USER@$SERVER send "uptime"; exit;')
echo $uptime

如果只是测试,则只需执行基于密钥的身份验证即可。Expect真的只能作为最后的努力。我曾与不支持基于密钥的身份验证但只支持SFTP的供应商一起使用过它。养成这种习惯对周围的生意都不好。