利用shell打开一个文件名为 renzi.txt 的文件,文件中存储了需要登录的服务器信息,包括 IP、用户名、密码和端口号。 循环读取文件中的每一行,并将每行内容按照“,”分隔,分别获取主机名、用户名、密码和端口号。 调用 verification_ssh 函数,传入主机名、用户名、密码、端口号和需要执行的命令。 在 verification_ssh 函数中,使用 paramiko 模块创建 SSH 连接,并执行传入的命令。将命令执行结果保存到 result.txt 文件中。 循环读取 cmd.txt 文件中的每一行命令,并执行。 最后关闭所有打开的文件和 SSH 连接。 需要注意的是,代码中使用的字符集是 GBK,如果在执行过程中出现乱码,可以将字符集改为 UTF-8
时间: 2023-06-17 21:06:20 浏览: 127
Renzi_et_al_2021:Renzi等人的数据和分析。 2021年
以下是使用shell打开包含服务器信息的文件,循环读取并调用 `verification_ssh` 函数的代码:
```shell
#!/bin/bash
# 打开包含服务器信息的文件
file="renzi.txt"
# 循环读取文件中的每一行
while IFS= read -r line
do
# 使用逗号分隔每行内容,获取主机名、用户名、密码和端口号
read -r host user pass port <<< "$(echo $line | tr ',' ' ')"
# 调用 verification_ssh 函数,传入参数
verification_ssh $host $user $pass $port "ls -al"
done <"$file"
# 定义 verification_ssh 函数
function verification_ssh {
# 获取传入的参数
host=$1
user=$2
pass=$3
port=$4
cmd=$5
# 使用 paramiko 模块创建 SSH 连接,并执行传入的命令
python - <<EOF
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("$host", $port, "$user", "$pass")
stdin, stdout, stderr = ssh.exec_command("$cmd")
result = stdout.read()
# 将命令执行结果保存到 result.txt 文件中
with open("result.txt", "a", encoding="gbk") as f:
f.write(result.decode("gbk"))
f.write("\n")
ssh.close()
EOF
}
# 循环读取 cmd.txt 文件中的每一行命令,并执行
while IFS= read -r command
do
eval "$command"
done < cmd.txt
# 关闭所有打开的文件和 SSH 连接
exec 3<&-
exec 4<&-
exec 5<&-
exec 6<&-
exec 7<&-
exec 8<&-
exec 9<&-
exec 10<&-
exec 11<&-
exec 12<&-
exec 13<&-
exec 14<&-
exec 15<&-
exec 16<&-
exec 17<&-
exec 18<&-
exec 19<&-
exec 20<&-
```
需要注意的是,如果在执行过程中出现乱码,可以将字符集改为 UTF-8。
阅读全文