perl远程执行多台服务器shell命令

简介:
  在生成环境中通常运维需要执行非常多的重复命令,一台可能还好 多台就杯具了。尤其有时候要批量去更新多台服务器的文件,或者是删除。
   一个好运维都是懒惰的,所以自己写了个perl脚本可以远程去执行shell命令,很灵活。2个配置文件,一个管理服务器信息,一个放所需要执行的命令。
code:
#!/usr/bin/perl 
use strict; 
use Net::SSH::Expect; 
my @ssh_list; 
my $ssh_txt='ip_list.txt'; 
my $command_txt='command_txt.txt'; 
open FH,$ssh_txt; 
        while(<FH>){ 
        @ssh_list=split; 
        print "正在登陆".$ssh_list[0]."...\n"; 
        &ssh_conn("$ssh_list[0]","$ssh_list[1]","$ssh_list[2]","$ssh_list[3]"); 
        } 
        close    FH; 

sub    ssh_conn(){ 
                my($host,$port,$user,$pass) = @_; 
                my $ssh = Net::SSH::Expect->new( 
                                host        =>            $host, 
                                port        =>            $port, 
                                user        =>            $user, 
                                password                =>$pass, 
                                no_terminal         =>0, 
                                raw_pty =>1, 
                                timeout =>            3, 
                                ); 
                                                $ssh->debug(0); 
                                                $ssh->run_ssh() or die "SSH process coundn't start:$!"; 
                                                $ssh->waitfor( '\(yes\/no\)\?$', 1 ); #交互式修改密码,给予2秒的时间 
                                                $ssh->send("yes\n"); 
                                                $ssh->waitfor( 'password:\s*$/', 1); 
                                                $ssh->send("$ssh_list[3]"); 
                                                $ssh->send("su - root"); 
                                                $ssh->waitfor( 'password:\s*$/', 1); 
                                                $ssh->send("$ssh_list[4]"); 
                                                #$ssh->waitfor("#\s*",2); 
                                                open F1,$command_txt; 
                                                while(<F1>){ 


                                                my @command=split/\n/,$_; 
                                                print "$command[0]-->    "; 
                                                $ssh->exec("$command[0]"); 

                                                print "$ssh_list[0]命令执行完毕\n"; 


                                                } 
                                                close F1; 
                                                $ssh->close(); 
下面是2个文件内容。
[root@nagios script]# cat ip_list.txt 
192.168.2.101    22    mcshell     psswd    server1 
192.168.2.102    22    mcshell     psswd    server2 
192.168.2.103    22    mcshell     psswd    server3 
[root@nagios script]# cat command_txt.txt 
touch /home/mcshell/file1 
touch /home/mcshell/file2 
 
执行结果:
当然我这里为了测试方便,用了写的比较简单,大家也可以发挥想象,直接把复杂的shell或者perl密令直接放在command_txt.txt中。同样可以批量处理
 









本文转自 mcshell 51CTO博客,原文链接:http://blog.51cto.com/mcshell/988791,如需转载请自行联系原作者

目录
相关文章
|
4天前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
28 12
|
2月前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
165 7
|
3月前
|
监控 Linux Shell
|
2月前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
55 1
|
3月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
83 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
3月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
93 4
|
3月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
68 3
|
3月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
56 1
|
7天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
6天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。

热门文章

最新文章