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