linux批量登录执行命令

worktile 其他 358

回复

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

    在Linux系统中,我们可以使用SSH协议来进行批量登录和执行命令。下面是一种实现批量登录执行命令的方法:

    1. 创建一个包含所有服务器IP地址的文本文件,每行一个IP地址。

    2. 使用以下命令批量登录服务器:

    “`bash
    for ip in $(cat server.txt); do
    ssh username@$ip “command”
    done
    “`
    其中,`server.txt` 是包含服务器IP地址的文本文件,`username` 是登录服务器的用户名,`command` 是要执行的命令。

    3. 如果登录服务器时需要密码,则可以使用 expect 工具将密码自动输入。首先安装 expect 工具:

    “`bash
    sudo apt-get install expect
    “`

    然后创建一个 expect 脚本,比如 `login.exp` :

    “`expect
    #!/usr/bin/expect

    set timeout 10
    set username [lindex $argv 0]
    set password [lindex $argv 1]
    set ip [lindex $argv 2]

    spawn ssh $username@$ip
    expect “password:”
    send “$password\r”
    interact
    “`

    保存并退出文件。使用以下命令批量登录服务器并执行命令:

    “`bash
    for ip in $(cat server.txt); do
    ./login.exp username password $ip “command”
    done
    “`
    其中,`username` 是登录服务器的用户名,`password` 是密码,`command` 是要执行的命令。

    使用这种方法,你可以方便地批量登录服务器并执行命令,提高工作效率。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux系统中,可以使用ssh命令实现批量登录并执行命令。下面是一种简单的方法:

    1. 首先,创建一个包含目标主机IP地址的文本文件,每行一个IP地址。假设文件名为”hosts.txt”。

    2. 编写一个shell脚本来批量登录并执行命令。创建一个名为”batch_commands.sh”的文件,并将以下内容复制到其中:

    “`
    #!/bin/bash

    # 读取主机列表文件
    while read -r host; do
    # 执行命令
    ssh username@$host “command”
    done < hosts.txt```在上面的脚本中,将"username"替换为你要登录的用户名,将"command"替换为你要执行的命令。3. 修改脚本的权限,使其可以执行:```chmod +x batch_commands.sh```4. 运行脚本:```./batch_commands.sh```脚本将会读取"hosts.txt"文件中的IP地址列表,并依次登录到每个主机上执行命令。注意事项:- 请确保在执行脚本之前已经在本地主机上设置了SSH公钥认证,以便无需输入密码登录远程主机。- 如果使用不同的用户名登录不同的主机,可以在"hosts.txt"文件中指定用户名,例如:username@192.168.0.1。- 可以在脚本中添加更多的命令,以实现更复杂的批量操作。- 请谨慎执行命令,以免造成不可逆的损失。确保在测试之后再在生产环境中使用批量执行命令。- 如果需要执行需要root权限的命令,可以在命令前加上sudo,并设置免密码sudo权限,或在脚本中使用sshpass命令来输入密码。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux系统中,批量登录并执行命令可以通过多种方法来实现,下面将介绍两种常用的方法:使用ssh和使用expect。

    方法一:使用ssh

    1. 准备一份包含所有目标主机IP地址的文本文件,例如hosts.txt。

    2. 创建一个包含要执行的命令的脚本文件,例如command.sh。注意,该文件必须可执行。

    3. 编写一个批量登录脚本,例如login.sh,使用ssh登录并在远程主机上执行command.sh脚本文件。

    “`shell
    #!/bin/bash

    # 设置用户名和密码
    USER=”your_username”
    PASSWORD=”your_password”

    # 读取主机列表
    while read HOST; do
    # 使用ssh登录目标主机,并执行command.sh脚本
    sshpass -p $PASSWORD ssh $USER@$HOST ‘bash -s’ < command.shdone < hosts.txt```4. 给login.sh脚本文件授予执行权限。```shellchmod +x login.sh```5. 运行login.sh脚本。```shell./login.sh```方法二:使用expectExpect是一个Tcl脚本扩展,用于自动化的交互式应用程序,可以在Linux中使用。1. 安装expect工具。```shellsudo apt-get install expect -y```2. 创建一个Expect脚本文件,例如login_expect.sh。```shell#!/usr/bin/expect# 设置用户名和密码set USER your_usernameset PASSWORD your_password# 读取主机列表set f [open "hosts.txt"]set hosts [split [read -nonewline $f] "\n"]close $f# 遍历主机列表foreach host $hosts { # 使用spawn命令启动ssh会话 spawn ssh $USER@$host # 期望输入密码提示 expect { "*password:" { # 发送密码 send "$PASSWORD\r" } } # 期望登录成功提示 expect { "*Last login*" { # 发送待执行的命令 send "bash command.sh\r" } } # 暂停一段时间等待命令执行完成 sleep 5 # 退出ssh会话 send "exit\r" expect eof}```3. 给login_expect.sh脚本文件授予执行权限。```shellchmod +x login_expect.sh```4. 运行login_expect.sh脚本。```shell./login_expect.sh```使用上述两种方法之一,您可以在Linux上批量登录并执行命令。根据实际情况选择适合自己的方法。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部