Gearman For Perl



 

Gearman perl 实践

环境:3台Linux主机

软件:gearman-0.14.tar.gz

 

Client:安装gearman::client

Work:安装 gearman::worker

Job 安装 gearman-0.14.tar.gz

 

Client端代:

use Gearman::Client;

my $client = Gearman::Client->new;

$client->job_servers(’192.168.0.2:4730′);

my $result = $client->do_task(‘wordcount’,’the quick brown fox jumps over the lazy dog’);

print “Words $$result\n”;

Worker端代码:

use Gearman::Worker;

my $worker = Gearman::Worker->new;

$worker->job_servers(‘192.168.0.2:4730’);

$worker->register_function(‘wordcount’ => \&wordcount);

$worker->work while 1;

sub wordcount

{

my ($input) = @_;

my @words = split /\s+/,$input->arg;

return (scalar @words);

}

Job端开启gearman的服务

Gearmand –d –u root

详细信息:

Gearmand –vvv

 

 

Mysql 主从搭建

 

mysql 主从搭建 两台mysql服务器

主服 192.168.0.214

从服 192.168.0.215

先在主服中的mysql 添加复制账号

mysql>GRANT REPLICATION SLAVE ON *.* TO ‘laird’@’192.168.0.215′ identified by ‘laird’;

注:添加了一个能在从服上登录的账号:用户名为laird 密码为laird

修改主服的my.cnf  主要参数有:

server-id = 1

log_bin = /data/mysql-bin.log

binlog-do-db = laird  \\将要复制的数据库

binlog-ignore-db = mysql \\不要复制的数据库

重启主服的mysql服务 service mysqld restart

进入 主服的mysql 执行

create database laird;

show master status;

进入从服  修改 修改从服的my.cnf  主要参数有:

server-id = 2

log_bin = /data/mysql-bin.log

master-connect-retry = 60

replicate-do-db = laird

replicate-ignore-db = mysql

log_slave_updates = 1 \\开启日志跟踪

进入mysql 中执行:

create database laird;

退出mysql 。

重启mysql 服务 service mysqld restart

进入mysql

mysql>change master to master_host= ’192.168.0.215′,master_user = ‘laird’,master_password = ‘laird’,master_log_file = ‘mysql-bin.000001′,master_log_pos = 98;

看看slave的状态show slave status

是否是waiting for master

在去主服上的laird库创建一个表看看从服上能不能复制!

祝你成功!

 

 

SecureCRT 无密码登陆Linux

安装好Linux服务器后。开启ssh登陆

Clietn 端:

用secureCRT创建密钥

在tools下的create public key创建 rsa类型 通信短语和描述 ssh格式的密钥 会提示你创建公钥的

注意保存的位置

Server 端:

复制pub key到服务器的登陆用户下(非root用户并可以su 到root下的用户)

如:/home/laird下

Mkdir /home/laird/.ssh //创建一个登陆空间

cat /home/laird/Identity.pub >> /home/laird/.ssh/authorized_key

编辑/etc/ssh/sshd_config

Cp /etc/ssh/sshd_config /etc/ssh/sshd_config_back

Vim /etc/ssh/sshd_config

Port 22000 //修改默认端口防止扫描

LoginGraceTime 120 //限制登陆验证时间

permitRootLogin no //关闭root登陆

#StrictModes yes

passwordAuthentication no 关闭密码登陆

pubkeyauthentication yes //开启公钥认证

authorizedkeysfile .ssh/authorized_keys //公钥存放路径

/etc/init.d/ssd restart

哈哈。。。OK了。。

Crt登陆的时候指定你的密钥位置

 

Debian Puppet自动化管理Linux

呵呵。。今天下班后就睡了。。。12点醒了。。没有了淫荡的睡意。。

朋友公司开一个party(免费的)准备过去看看  刚刚起来配置一哈puppet

感觉这个不错。。

debian的配置方法

master是服务端

back是客户端

master: # apt-get install libopenssl-ruby rdoc irb1.8 libopenssl-ruby1.8 libreadline-ruby1.8 libruby1.8 rdoc1.8 ruby1.8

master:#apt-get -t feisty install facter puppet puppetmaster

back:#apt-get install libopenssl-ruby rdoc irb1.8 libopenssl-ruby1.8 libreadline-ruby1.8 libruby1.8 rdoc1.8 ruby1.8

back:#apt-get -t feisty install facter puppet

所有的软件安装好后下面就是配置文件了。。

master:# vim /etc/puppet/manifests/site.pp   //建立一个测试文件玩玩那

#create test file

class test_class {

file { “/tmp/test”:

ensure => present,

mode => 644,

owner =>root,

group =>root

}

}

#send back run which file

node back {

include test_class

}

}

启动你puppet服务吧

master:#/etc/init.d/puppetmaster start

客户机了

back:#vim /etc/puppet/puppetd.conf

[puppetd]

server = master.web.com \\我是修改了/etc/hosts文件后就能才做的web.com测试

logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
pluginsync=true

[puppetmasterd]
templatedir=/var/lib/puppet/templatesa

保存退出

重要的时候到来了。。证书来了

在客户机上做:

back:# puppetd –-server master.web.com –w 60 –-test

err: No certificate; running with reduced functionality.
info: Creating a new certificate request for pclient.example.con
info: Requesting certificate
warning: peer certificate won’t be verified in this SSL session
notice: Did not receive certificate

在服务器上看看你的证书列表

master:#puppetca –list

back.web.com

然后签名证书吧。。

master:#puppetca –sign back.web.com

你的客户机能看到如下:

info: Requesting certificate
warning: peer certificate won’t be verified in this SSL session
notice: Ignoring –listen on onetime run
info: Caching configuration at /etc/puppet/localconfig.yaml
notice: Starting configuration run
notice: //pclient/test_class/File[/tmp/testfile]/ensure: created
info: Creating state file /var/lib/puppet/state/state.yaml
notice: Finished configuration run in 0.11 seconds

一切都是浮云。

back:#puppetd –server master.web.com -w 60 –test

去看看你的测试文件是不是被创建了。

back:#ls -l /tmp \\看看权限吧。。。

再去修改你的权限 看看是不是会变。。就是在服务端的site.pp 文件

Cisco command

Access-enable   允许路由器在动态访问列表中创建临时访问列表入口
Access-group   把访问控制列表(ACL)应用到接口上
Access-list   定义一个标准的IP ACL
Access-template   在连接的路由器上手动替换临时访问列表入口
Appn   向APPN子系统发送命令
Atmsig   执行ATM信令命令
B   手动引导操作系统
Bandwidth   设置接口的带宽
Banner motd   指定日期信息标语
Bfe   设置突发事件手册模式
Boot system   指定路由器启动时加载的系统映像
Calendar   设置硬件日历
Cd   更改路径
Cdp enable   允许接口运行CDP协议
Clear   复位功能
Clear counters   清除接口计数器
Clear interface   重新启动接口上的硬件逻辑
Clockrate   设置串口硬件连接的时钟速率,如网络接口模块和接口处理器能接受的速率
Cmt   开启/关闭FDDI连接管理功能
Config-register   修改配置寄存器设置
Configure   允许进入存在的配置模式,在中心站点上维护并保存配置信息
Configure memory   从NVRAM加载配置信息
Configure terminal   从终端进行手动配置
Connect   打开一个终端连接
Copy   复制配置或映像数据
Copy flash tftp   备份系统映像文件到TFTP服务器
Copy running-config startup-config   将RAM中的当前配置存储到NVRAM
Copy running-config tftp   将RAM中的当前配置存储到网络TFTP服务器上
Copy tftp flash   从TFTP服务器上下载新映像到Flash
Copy tftp running-config   从TFTP服务器上下载配置文件
Debug   使用调试功能
Debug dialer   显示接口在拨什么号及诸如此类的信息
Debug ip rip   显示RIP路由选择更新数据
Debug ipx routing activity   显示关于路由选择协议(RIP)更新数据包的信息
Debug ipx sap   显示关于SAP(业务通告协议)更新数据包信息
Debug isdn q921   显示在路由器D通道ISDN接口上发生的数据链路层(第2层)的访问过程
Debug ppp   显示在实施PPP中发生的业务和交换信息
Delete   删除文件
Deny   为一个已命名的IP ACL设置条件
Dialer idle-timeout  规定线路断开前的空闲时间的长度
Dialer map   设置一个串行接口来呼叫一个或多个地点
Dialer wait-for-carrier-time   规定花多长时间等待一个载体
Dialer-group   通过对属于一个特定拨号组的接口进行配置来访问控制
Dialer-list protocol   定义一个数字数据接受器(DDR)拨号表以通过协议或ACL与协议的组合来控制控制拨号
Dir   显示给定设备上的文件
Disable   关闭特许模式
Disconnect   断开已建立的连接
Enable   打开特许模式
Enable password   确定一个密码以防止对路由器非授权的访问
Enable password   设置本地口令控制不同特权级别的访问
Enable secret   为enable password命令定义额外一层安全性
Encapsulation frame-relay   启动帧中继封装
Encapsulation novell-ether   规定在网络段上使用的Novell独一无二的格式
Encapsulation PPP   把PPP设置为由串口或ISDN接口使用的封装方法
Encapsulation sap   规定在网络段上使用的以太网802.2格式Cisco的密码是sap
End   退出配置模式
Erase   删除闪存或配置缓存
Erase startup-config 删除NVRAM中的内容
Exec-timeout 配置EXEC命令解释器在检测到用户输入前所等待的时间
Exit   退出所有配置模式或者关闭一个激活的终端会话和终止一个EXEC
Exit   终止任何配置模式或关闭一个活动的对话和结束EXEC
format   格式化设备
Frame-relay local-dlci   为使用帧中继封装的串行线路启动本地管理接口(LMI)
Help   获得交互式帮助系统
History   查看历史记录
Hostname   使用一个主机名来配置路由器,该主机名以提示符或者缺省文件名的方式使用
Interface   设置接口类型并且输入接口配置模式
Interface   配置接口类型和进入接口配置模式
Interface serial   选择接口并且输入接口配置模式
Ip access-group   控制对一个接口的访问
Ip address   设定接口的网络逻辑地址
Ip address   设置一个接口地址和子网掩码并开始IP处理
Ip default-network   建立一条缺省路由
Ip domain-lookup   允许路由器缺省使用DNS
Ip host   定义静态主机名到IP地址映射
Ip name-server   指定至多6个进行名字-地址解析的服务器地址
Ip route   建立一条静态路由
Ip unnumbered   在为给一个接口分配一个明确的IP地址情况下,在串口上启动互联网协议(IP)的处理过程
Ipx delay   设置点计数
Ipx ipxwan   在串口上启动IPXWAN协议
Ipx maximum-paths   当转发数据包时设置Cisco IOS软件使用的等价路径数量
Ipx network   在一个特定接口上启动互联网数据包交换(IPX)的路由选择并且选择封装的类型(用帧封装)
Ipx router   规定使用的路由选择协议
Ipx routing   启动IPX路由选择
Ipx sap-interval   在较慢的链路上设置较不频繁的SAP(业务广告协议)更新
Ipx type-20-input-checks   限制对IPX20类数据包广播的传播的接受
Isdn spid1   在路由器上规定已经由ISDN业务供应商为B1信道分配的业务简介号(SPID)
Isdn spid2   在路由器上规定已经由ISDN业务供应商为B2信道分配的业务简介号(SPID)
Isdn switch-type   规定了在ISDN接口上的中央办公区的交换机的类型
Keeplive   为使用帧中继封装的串行线路LMI(本地管理接口)机制
Lat   打开LAT连接
Line   确定一个特定的线路和开始线路配置
Line concole   设置控制台端口线路
Line vty   为远程控制台访问规定了一个虚拟终端
Lock   锁住终端控制台
Login   在终端会话登录过程中启动了密码检查
Login   以某用户身份登录,登录时允许口令验证
Logout   退出EXEC模式
Mbranch   向下跟踪组播地址路由至终端
Media-type   定义介质类型
Metric holddown   把新的IGRP路由选择信息与正在使用的IGRP路由选择信息隔离一段时间
Mrbranch   向上解析组播地址路由至枝端
Mrinfo   从组播路由器上获取邻居和版本信息
Mstat   对组播地址多次路由跟踪后显示统计数字
Mtrace    由源向目标跟踪解析组播地址路径
Name-connection   命名已存在的网络连接
Ncia   开启/关闭NCIA服务器
Network   把一个基于NIC的地址分配给一个与它直接相连的路由器把网络与一个IGRP的路由选择的过程联系起来在IPX路由器配置模式下,在网络上启动加强的IGRP
Network   指定一个和路由器直接相连的网络地址段
Network-number   对一个直接连接的网络进行规定
No shutdown   打开一个关闭的接口
Pad   开启一个X.29 PAD连接
Permit   为一个已命名的IP ACL设置条件
Ping   把ICMP响应请求的数据包发送网络上的另一个节点检查主机的可达性和网络的连通性对网络的基本连通性进行诊断
Ping   发送回声请求,诊断基本的网络连通性
Ppp   开始IETF点到点协议
Ppp authentication   启动Challenge握手鉴权协议(CHAP)或者密码验证协议(PAP)或者将两者都启动,并且对在接口上选择的CHAP和PAP验证的顺序进行规定
Ppp chap hostname   当用CHAP进行身份验证时,创建一批好像是同一台主机的拨号路由器
Ppp chap password   设置一个密码,该密码被发送到对路由器进行身份验证的主机命令对进入路由器的用户名/密码的数量进行了限制
Ppp pap sent-username   对一个接口启动远程PAP支持,并且在PAP对同等层请求数据包验证过程中使用sent-username和password
Protocol   对一个IP路由选择协议进行定义,该协议可以是RIP,内部网关路由选择协议(IGRP),开放最短路径优先(OSPF),还可以是加强的IGRP
Pwd   显示当前设备名
Reload   关闭并执行冷启动;重启操作系统
Rlogin   打开一个活动的网络连接
Router   由第一项定义的IP路由协议作为路由进程,例如:router rip 选择RIP作为路由协议
Router igrp   启动一个IGRP的路由选择过程
Router rip   选择RIP作为路由选择协议
Rsh   执行一个远程命令
Sdlc   发送SDLC测试帧
Send   在tty线路上发送消息
Service password-encryption   对口令进行加密
Setup   运行Setup命令
Show   显示运行系统信息
Show access-lists   显示当前所有ACL的内容
Show buffers   显示缓存器统计信息
Show cdp entry   显示CDP表中所列相邻设备的信息
Show cdp interface   显示打开的CDP接口信息
Show cdp neighbors   显示CDP查找进程的结果
Show dialer   显示为DDR(数字数据接受器)设置的串行接口的一般诊断信息
Show flash   显示闪存的布局和内容信息
Show frame-relay lmi   显示关于本地管理接口(LMI)的统计信息
Show frame-relay map   显示关于连接的当前映射入口和信息
Show frame-relay pvc   显示关于帧中继接口的永久虚电路(pvc)的统计信息
Show hosts   显示主机名和地址的缓存列表
Show interfaces   显示设置在路由器和访问服务器上所有接口的统计信息
Show interfaces   显示路由器上配置的所有接口的状态
Show interfaces serial   显示关于一个串口的信息
Show ip interface   列出一个接口的IP信息和状态的小结
Show ip interface   列出接口的状态和全局参数
Show ip protocols   显示活动路由协议进程的参数和当前状态
Show ip route   显示路由选择表的当前状态
Show ip router   显示IP路由表信息
Show ipx interface   显示Cisco IOS软件设置的IPX接口的状态以及每个接口中的参数
Show ipx route   显示IPX路由选择表的内容
Show ipx servers   显示IPX服务器列表
Show ipx traffic   显示数据包的数量和类型
Show isdn active   显示当前呼叫的信息,包括被叫号码、建立连接前所花费的时间、在呼叫期间使用的自动化操作控制(AOC)收费单元以及是否在呼叫期间和呼叫结束时提供AOC信息
Show isdn ststus   显示所有isdn接口的状态、或者一个特定的数字信号链路(DSL)的状态或者一个特定isdn接口的状态
Show memory   显示路由器内存的大小,包括空闲内存的大小
Show processes   显示路由器的进程
Show protocols   显示设置的协议
Show protocols   显示配置的协议。这条命令显示任何配置了的第3层协议的状态
Show running-config   显示RAM中的当前配置信息
Show spantree   显示关于虚拟局域网(VLAN)的生成树信息
Show stacks   监控和中断程序对堆栈的使用,并显示系统上一次重启的原因
Show startup-config   显示NVRAM中的启动配置文件
Show ststus   显示ISDN线路和两个B信道的当前状态
Show version 显示系统硬件的配置,软件的版本,配置文件的名称和来源及引导映像
Shutdown   关闭一个接口
Telnet   开启一个telect连接
Term ip   指定当前会话的网络掩码的格式
Term ip netmask-format   规定了在show命令输出中网络掩码显示的格式
Timers basic   控制着IGRP以多少时间间隔发送更新信息
Trace   跟踪IP路由
Username password   规定了在CHAP和PAP呼叫者身份验证过程中使用的密码
Verify   检验flash文件
Where   显示活动连接
Which-route OSI路由表查找和显示结果
Write   运行的配置信息写入内存,网络或终端
Write erase   现在由copy startup-config命令替换
X3   在PAD上设置X.3参数
Xremote   进入XRemote模式

Python %符号的意思

%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号

Python 批量处理Word

#encoding = utf-8
from time import  sleep
import win32com
from win32com import client

def word(name):
word = win32com.client.Dispatch(‘Word.Application’)
doc = word.Documents.Add()
word.Visible =True
sleep(1)

rng = doc.Range(0,0)
rng.InsertAfter(u’dear %s:\n’ % name + ‘   Pleas come in to bussins meeting!’)

sleep(1)

filename = name + “.doc”
doc.SaveAs(filename)

doc.Close(False)
word.Application.Quit()

if __name__ == ‘__main__’:
names = [‘LQ’, ‘Laird’, ‘Eve’]
for name in names:
word(name)

FreeBSD port axle 加速

首先到
cd /usr/ports/ftp/axel 之后 make install clean
安装完成后把/etc/make.conf文件编辑如下:
# added by use.perl 2007-02-01 17:02:19
PERL_VER=5.8.7
PERL_VERSION=5.8.7
FETCH_CMD=axel
FETCH_BEFORE_ARGS= -n 10 -a
FETCH_AFTER_ARGS=
DISABLE_SIZE=yes
MASTER_SITE_OVERRIDE?=\
http://ports.hshh.org/${ DIST_SUBDIR }/\
http://ports.cn.freebsd.org/${ DIST_SUBDIR }/\
ftp://ftp.freeBSDchina.org/pub/FreeBSD/ports/distfiles/${ DIST_SUBDIR }/
MASTER_SITE_OVERRIDE?=${ MASTER_SITE_BACKUP }

Linux and freebsd 负载均衡

在这些天完成两个实验 一个是Linux 的负载均衡 和FreeBSD的冗余保证

Linux 下的负载均衡用ipvsadm软件实现
Internet —————————–ipvsadmin———————–real1
|
|
|
real2
ipvsadm 网络配置eth0 = 192.168.0.2  eth1 = 192.168.2.1 gw 192.168.0.1
real1 eht0 = 192.168.2.2   gw 192.168.2.1
real2 eth0 = 192.168.2.3   gw  192.168.2.1
在ipvsadm配置如下:
echo 1 > /pro/sys/net/ipvs4/ip_forword  \\开启路由转发功能
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MQUERADE \\做nat
ipvsadm -C
ipvsadm -A 192.168.0.2:80 -s rr \\192.168.0.2上做均衡负载的算法
ipvsadm -a 192.168.0.2:80 -r 192.168.1.2:80 -m -w 1 \\m是通过nat  w是权重
ipvsadm -a 192.168.0.2:80 -r 192.168.1.3:80 -m -w 1
/etc/init.d/ipvsadm save
ipvsadm -L -n \\ 查看管理的real
ipvsadm -lnc  \\查看链接
real1
|
|
Inet ———————  real2
real1 em0=192.168.0.25
real2 em0=192.168.0.26
FreeBSD 实现
real1 和real2 同时编译内核
deivce    carp
sysctl net.inet.carp.preempt=1 \\开启这个功能
ifconfig crap0 create
ifconfig crap0 vhid pass 密码 192.168.0.245/24 up
cd /usr/ports/net/ipvs
make install
/sbin/kldload /boot/modules/ipvs.ko
/sbin/kldload /boot/modules/ip_vs_rr.ko
/usr/local/sbin/ipvsadm -A -t 192.168.0.254:80 -s rr
/usr/local/sbin/ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.25:80 -g
/usr/local/sbin/ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.26:80 -g

安装apache
修改index.hmtl


去测试吧。

Perl 进度条

 #!/usr/bin/perl -w
 $n = 27;
 for($i=1;$i<=$n;$i++){
 proc_bar($i,$n);
 select(undef, undef, undef, 0.2);
 }
 print "\n";

 sub proc_bar{
 local $| = 1;
 my $i = $_[0] || return 0;
 my $n = $_[1] || return 0;
 print "\r33[36m[33[33m".("|" x int(($i/$n)*50)).
 (" " x (50 - int(($i/$n)*50)))."33[36m]";
 printf("%2.1f%%33[0m",$i/$n*100);
 local $| = 0;
 }