linux并发批量登录执行命令
-
Linux并发批量登录执行命令的方法是使用SSH连接远程服务器,并在每个连接中执行相应的命令。下面将介绍两种常用的方法:使用sshpass和使用expect。
方法一:使用sshpass
1. 首先,需要安装sshpass工具,可以使用以下命令安装:
“`
sudo apt-get install sshpass
“`2. 创建一个文本文件,例如`host_list.txt`,在该文件中列出需要登录的目标主机的IP地址或主机名。
3. 创建一个批量执行的脚本文件,例如`execute.sh`,内容如下:
“`bash
#!/bin/bash# 读取目标主机列表
while read -r host
do
# 执行sshpass命令登录远程主机,并在登录后执行指定的命令
sshpass -pssh @$host “ ”
done < host_list.txt ``` 在脚本中替换``为远程主机的登录密码,` `为登录用户名,` `为要执行的命令。 4. 给脚本文件授予执行权限:
“`
chmod +x execute.sh
“`5. 运行脚本:
“`
./execute.sh
“`方法二:使用expect
1. 首先,需要安装expect工具,可以使用以下命令安装:
“`
sudo apt-get install expect
“`2. 创建一个批量执行的脚本文件,例如`execute_expect.sh`,内容如下:
“`expect
#!/usr/bin/expect# 读取目标主机列表
set file [open “host_list.txt”]
set hosts [split [read $file] “\n”]
close $file# 登录远程主机并执行命令
foreach host $hosts {
spawn ssh@$host
expect {
“*password:” {
send “\r”
expect “$ ”
send “\r”
expect “$ ”
send “exit\r”
}
“$ ” {
send “\r”
expect “$ ”
send “exit\r”
}
}
}
“`在脚本中替换`
`为远程主机的登录密码,` `为登录用户名,` `为要执行的命令。 3. 给脚本文件授予执行权限:
“`
chmod +x execute_expect.sh
“`4. 运行脚本:
“`
./execute_expect.sh
“`以上就是两种常用的方法来实现Linux并发批量登录执行命令。使用这些方法可以节省时间和精力,同时提高工作效率。
2年前 -
在Linux中,有许多方法可以实现并发批量登录执行命令,以下是其中一些常用的方法:
1. 使用sshpass命令:sshpass是一个用于自动化登录ssh会话的工具。要使用sshpass,在服务器上安装它并运行以下命令:
“`
$ sshpass -p ‘password’ ssh user@host ‘command’
“`
其中,password是用户的密码,user是登录用户名,host是目标主机的地址,command是要执行的命令。2. 使用ssh和公钥登录:使用此方法时,首先需要在源主机上生成一个公钥,并将其复制到目标主机上的授权密钥列表中。然后,可以使用以下命令登录并执行命令:
“`
$ ssh -i /path/to/private_key user@host ‘command’
“`3. 使用expect命令:expect是一个自动化脚本工具,可以模拟人工键入和响应。要使用expect,可以创建一个expect脚本,其中包含登录和执行命令的步骤。以下是一个简单的expect脚本示例:
“`
#!/usr/bin/expect
spawn ssh user@host
expect “password:”
send “password\r”
expect “$ ”
send “command\r”
expect “$ ”
send “exit\r”
“`
在这个示例中,替换user、host、password和command为实际的值,然后保存脚本为example.exp,并使用以下命令运行脚本:
“`
$ expect example.exp
“`4. 使用pssh工具:pssh是一个用于在多个主机上并发运行命令的工具。要使用pssh,首先需要安装它。然后,可以使用以下命令在多个主机上并发执行命令:
“`
$ pssh -H host1,host2,host3 -l user -i ‘command’
“`
其中,host1、host2、host3是目标主机的地址,user是登录用户名,command是要执行的命令。5. 使用ansible工具:ansible是一个自动化IT操作和配置管理工具。它可以通过SSH连接到远程主机,并在多个主机上并发执行命令。要使用ansible,首先需要安装它并配置主机清单。然后,可以使用以下命令在多个主机上并发执行命令:
“`
$ ansible -i inventory.yml -u user -m shell -a ‘command’ all
“`
其中,inventory.yml是主机清单文件的路径,user是登录用户名,command是要执行的命令。2年前 -
Linux系统提供了多种方法来实现并发批量登录并执行命令。下面我将介绍两种常用的方法,分别是使用ssh和使用Expect工具。
方法一:使用ssh
1. 首先,确保你的Linux系统上已经安装了ssh客户端工具。如果没有安装,可以使用以下命令进行安装:
“`bash
sudo apt-get install openssh-client (Debian/Ubuntu)
sudo yum install openssh-clients (CentOS/Red Hat)
“`2. 创建一个包含目标主机IP地址的文本文件。每个IP地址应该占用一行。例如,你可以创建一个名为”hosts.txt”的文本文件,并在其中列出目标主机的IP地址。
“`bash
192.168.1.1
192.168.1.2
192.168.1.3
“`3. 创建一个包含要执行的命令的脚本文件。例如,你可以创建一个名为”command.sh”的脚本文件,并在其中编写要执行的命令。
“`bash
#!/bin/bash
echo “Hello, world!”
uname -a
“`4. 创建一个名为”ssh_script.sh”的Bash脚本文件,用来循环读取”hosts.txt”文件中的IP地址,并使用ssh登录到每个主机并执行命令。
“`bash
#!/bin/bash
while IFS= read -r host; do
ssh user@$host ‘bash -s’ < command.sh done < hosts.txt ``` 在这个脚本中,"user"是你登录目标主机的用户名,"command.sh"是你要执行的命令所在的脚本文件。5. 给"ssh_script.sh"脚本文件添加执行权限。 ```bash chmod +x ssh_script.sh ```6. 运行"ssh_script.sh"脚本。 ```bash ./ssh_script.sh ``` 脚本将循环登录到每个目标主机,并执行命令。方法二:使用Expect工具1. 首先,确保你的Linux系统上已经安装了Expect工具。如果没有安装,可以使用以下命令进行安装: ```bash sudo apt-get install expect (Debian/Ubuntu) sudo yum install expect (CentOS/Red Hat) ```2. 创建一个包含目标主机IP地址、用户名和密码的文本文件。每一行应该按照以下格式排列:IP地址 用户名 密码。例如,你可以创建一个名为"hosts.txt"的文本文件,并在其中列出目标主机的信息: ```bash 192.168.1.1 user1 password1 192.168.1.2 user2 password2 192.168.1.3 user3 password3 ```3. 创建一个包含要执行的命令的脚本文件。例如,你可以创建一个名为"command.sh"的脚本文件,并在其中编写要执行的命令。 ```bash #!/bin/bash echo "Hello, world!" uname -a ```4. 创建一个名为"expect_script.sh"的Expect脚本文件,用来循环读取"hosts.txt"文件中的主机信息,并使用ssh登录到每个主机并执行命令。 ```bash #!/usr/bin/expect set timeout -1 set fd [open "hosts.txt" r] while {[gets $fd line] != -1} { set host [lindex $line 0] set user [lindex $line 1] set password [lindex $line 2] spawn ssh $user@$host expect "*password:" send "$password\r" expect "$user@" send "bash -s < command.sh\r" expect "$user@" send "exit\r" } close $fd ``` 在这个脚本中,"command.sh"是你要执行的命令所在的脚本文件。5. 给"expect_script.sh"脚本文件添加执行权限。 ```bash chmod +x expect_script.sh ```6. 运行"expect_script.sh"脚本。 ```bash ./expect_script.sh ``` 脚本将循环登录到每个目标主机,并执行命令。以上两种方法都可以实现并发批量登录并执行命令。你可以根据自己的需求选择其中一种方法来使用。2年前