linux并发批量登录执行命令

worktile 其他 67

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    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 -p ssh @$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年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在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年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    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年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部