代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Perl
】
自动化批量执行脚本
作者:
宝仔love
/ 发布于
2013/8/5
/
1104
自动化批量对多台服务器执行相关的操作,一般十几台服务器用用这也可以了,不需要puppet
#!/usr/bin/perl #use strict; use feature 'say'; use Net::SSH::Perl; use Net::SCP::Expect; use Net::OpenSSH; use Term::ReadKey; alarm 60; ####服务器列表 my @server_list = ( { 'username'=>'root','host'=>'192.168.1.108'}, { 'username'=>'root','host'=>'192.168.1.109'}, ); #拷贝脚本至多台服务器,并执行该脚本,用了Net::SCP::Expect模块 sub autocopy { my($cmd) = @_; foreach my $element (@Ad) { my $host = $$element{'host'}; my $username = $$element{'username'}; my $password = $$element{'passwd'}; my $ssh = Net::SSH::Perl->new($host); $ssh->login($username,$password); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); if(!$exit) { my $scp = Net::SCP::Expect->new('auto_yes'=>1);##一般第一次连接服务器的时候会出现"Are you sure you want to continue connecting (yes/no)?",这个'auto_yes'=>1 就是默认帮我们输入了yes $scp->login($username,$password); eval { $scp->scp('/root/bin/pubkey.sh',"$host:/root/bin/"); }; if($@) { print $host."\n"; print $@; } } else { print $host.' cmd error'; exit; } } } ####根据用户名密码登入操作 sub autoexec { my($cmd) = @_; foreach my $element (@Ad) { my $host = $$element{'host'}; my $username = $$element{'username'}; my $password = $$element{'passwd'}; my $ssh = Net::SSH::Perl->new($host); $ssh->login($username,$password); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); if($exit) { say $host; } } } ####通过加密过的密钥登入操作 sub auto_to_identity { my($cmd) = @_; ReadMode('noecho'); ###隐藏输入的密钥密码 print "Enter passphrase for keyfile '/root/.ssh/id_rsa':"; my $passphrase = ReadLine(0); chomp($passphrase); ReadMode('restore'); say ''; foreach my $element (@server_list) { my $host = $$element{'host'}; my $username = $$element{'username'}; my $key = '/root/.ssh/id_rsa'; my %param = ( user => $username, passphrase => $passphrase, key_path => $key, timeout => 10 ); my $ssh = Net::OpenSSH->new($host,%param); my ($stdout,$stderr) = $ssh->capture2($cmd); if($stdout){ say $stdout; } else { say $ssh->error; say $stderr; } } } my $cmd = 'mkdir /root/dd'; auto_to_identity($cmd);
试试其它关键字
同语言下
.
获取本机所有IP和设备的绑定情况
.
生成隨機密碼
.
取文件的最后修改时间
.
获取本机所有IP和设备的绑定情况
.
将perl脚本变成乱糟糟的一团
.
从 HTML网页中解析出链接
.
使用 HTTP::Request 请求 URL 并将响应保存到文件
.
使用指定的User-Agent抓取网页
.
使用 Net::SMTP发送邮件
.
编写的一个简单 Web服务器
可能有用的
.
获取本机所有IP和设备的绑定情况
.
生成隨機密碼
.
取文件的最后修改时间
.
获取本机所有IP和设备的绑定情况
.
将perl脚本变成乱糟糟的一团
.
从 HTML网页中解析出链接
.
使用 HTTP::Request 请求 URL 并将响应保存到文件
.
使用指定的User-Agent抓取网页
.
使用 Net::SMTP发送邮件
.
编写的一个简单 Web服务器
宝仔love
贡献的其它代码
(
9
)
.
将xml解析成对应的html
.
用 Java 语言将 utf8 编码的汉字还原
.
使用ssl连接发送邮件
.
局域网IP扫描
.
自动化批量执行脚本
.
php生成微博短网址的算法
.
perl中的队列
.
php+shell检测文件类型
.
mysql存储过程的游标和控制结构
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3