日历

2018年十一月
« 9月    
 1234
567891011
12131415161718
19202122232425
2627282930  

最近评论

    linux企业应用

    利用Nmap端口扫描

    安装nmap:yum -y install nmap

    命令:nmap -v -sT  IPAddr

    [root@TestCentOS7 ~]# nmap -v -sT IPADDRESS

    Starting Nmap 6.40 ( http://nmap.org ) at 2016-07-15 15:16 CST
    Initiating Ping Scan at 15:16
    Scanning IPADDRESS [4 ports]
    Completed Ping Scan at 15:16, 1.01s elapsed (1 total hosts)
    Initiating Parallel DNS resolution of 1 host. at 15:16
    Completed Parallel DNS resolution of 1 host. at 15:16, 6.50s elapsed
    Initiating Connect Scan at 15:16
    Scanning IPADDRESS [1000 ports]
    Discovered open port 135/tcp on IPADDRESS
    Discovered open port 445/tcp on IPADDRESS
    Discovered open port 139/tcp on IPADDRESS
    Discovered open port 49158/tcp on IPADDRESS
    Discovered open port 49153/tcp on IPADDRESS
    Discovered open port 33899/tcp on IPADDRESS
    Discovered open port 49155/tcp on IPADDRESS
    Discovered open port 49154/tcp on IPADDRESS
    Discovered open port 49152/tcp on IPADDRESS
    Discovered open port 49160/tcp on IPADDRESS
    Completed Connect Scan at 15:16, 2.72s elapsed (1000 total ports)
    Nmap scan report for IPADDRESS
    Host is up (0.015s latency).
    Not shown: 990 closed ports
    PORT      STATE SERVICE
    135/tcp   open  msrpc
    139/tcp   open  netbios-ssn
    445/tcp   open  microsoft-ds
    33899/tcp open  unknown
    49152/tcp open  unknown
    49153/tcp open  unknown
    49154/tcp open  unknown
    49155/tcp open  unknown
    49158/tcp open  unknown
    49160/tcp open  unknown

    Read data files from: /usr/bin/../share/nmap
    Nmap done: 1 IP address (1 host up) scanned in 10.32 seconds
    Raw packets sent: 4 (152B) | Rcvd: 1 (28B)

    linux企业应用

    Linux运维工程师入门须掌握的10个技术点

    linux系统如果是学习可以选用redhat或centos,特别是centos在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,有空可以再研究一下SUSE,有些公司也喜欢用,例如我公司 。。。。。

    工具如下:

    1、linux系统基础,这个不用说了,是基础中的基础,连这个都不会就别干了,参考书籍,可以看鸟哥linux基础篇,至少要掌握这书60%内容,没必须全部掌握,但基本命令总得会吧

    2、网络服务,服务有很多种,每间公司都会用到不同的,但基础的服务肯定要掌握,如FTP, DNS,SAMBA, 邮件, 这几个大概学一下就行,LAMP和LNMP是必须要熟练,我所指的不是光光会搭建,而是要很熟悉里面的相当配置才行,因为公司最关键的绝对是WEB服务 器,所以nginx和apache要熟悉,特别是nginx一定要很熟悉才行,至少有些公司还会用tomcat,这个也最好学一下。其实网络服务方面不用 太担心,一般公司的环境都已经搭建好,就算有新服务器或让你整改,公司会有相应的文档让你参照来弄,不会让你乱来的,但至少相关的配置一定要学熟,而且肯 定是编译安装多,那些模块要熟悉一下他的作用,特别是PHP那些模块。

    这面2点只是基础,也是必要条件,不能说是工具,下以才是真正的要掌握的工具。

    3、shell脚本和另一个脚本语言,shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一 些系统管理脚本,最简单也得写个监控CPU,内存比率的脚本吧,这是最最最基本了,别以为会写那些猜数字和计算什么数的,这些没什么作用,只作学习意义, 写系统脚本才是最有意义,而另一个脚本语言是可选的,一般是3P,即python, perl和php,php就不需要考虑了,除非你要做开发,我个人建议学python会比较好,难实现自动化运维,perl是文本处理很强大,反正这两个 学一个就行了。

    4、sed和awk工具,必须要掌握,在掌握这两个工具同时,还要掌握正则表达式,这个就痛苦了,正则是最难学的表达式,但结合到sed和awk中会很强大,在处理文本内容和过滤WEB内容时十分有用,不过在学shell的同时一般会经常结合用到的,所以学第3点就会顺便学第4点。

    5、文本处理命令,sort , tr , cut, paste, uniq, tee等,必学,也是结合第3点时一并学习的。

    6、数据库,首选mysql,别问我为什么不学sqlserver和oracle,因为linux用得最多绝对是mysql,增删改查必学,特别要学熟查,其它方面可能不太需要,因为运维人员使用最多还是查,哪些优化和开发语句不会让你弄的。

    7、防火墙,不学不行,防火墙也算是个难点,说难不难,说易不易,最重要弄懂规则,如果学过CCNA的朋友可能会比较好学,因为iptables也有NAT表,原理是一样的,而FILTER表用得最多,反正不学就肯定不合格。

    8、监控工具,十分十分重要,我个人建议,最好学这3个,cacti,nagios,zibbix,企业用得最多应该是nagios和 zibbix,反正都学吧,但nagios会有点难,因为会涉及到用脚本写自动监控,那个地方很难。

    9、集群和热备,这个很重要,肯定要懂的,但到了公司就不会让你去弄,因为新手基本不让你碰,集群工具有很多, 最好学是LVS,这是必学,最好也学学nginx集群,反向代理,还有热备,这个就更多工具能实现了,像我公司是自己开发热备工具的,mysql热备也要 学,就是主从复制,这个别告诉我容易,其实不容易的,要学懂整个流程一点也不容易,只照着做根本没意思。

    10、数据备份,不学不行,工具有很多,但至少要把RAID的原理弄懂,特别是企业最常用的1+0或0+1,自己做实验也要弄出来,备份工具有很多,如tar, dump, rsync等,最好多了解一下。

    算了,说到这10点已经够你受了,应该可以入门了,因为有些技术会比较难学,例如apache和nginx中还有些很重要的技术,如系统调优和服务 优化,还有程序优化,这些在没接触工作前很难学习到的,所以先把这10点学了吧,估计要学熟至少3个月不止,就脚本那部分已经让你很吃力了,我建议是先学 熟shell,等工作后再学另一门脚本语言,这样会比较好。

    以上就是踏入linux运维工程师需要掌握的工具,其实还有很多工具要掌握的,但你在学习环境中是很难学到,最 后我再提醒一下,这里所指的工具相当于技能,而不是像windows或ubuntu那些图形化工具,那些工具没用的,还有,学linux就别装图形界面, 这样虚拟机就不用吃太多内存,而且绝对不建议在真机上装linux,根本达不到学习效果。

    linux企业应用

    passwd命令提示: 鉴定令牌操作错误

    使用passwd修改密码报错: 鉴定令牌操作错误。下面对该错误可能出现的四种情况进行分析:

    第一种:/usr/bin/passwd 的权限中没有添加s即SUID特殊权限
    即:-rwxr-xr-x. 1 root root 27000 8月  22 2010 /usr/bin/passwd
    解决方案:chmod u+s /usr/bin/passwd
    SUID的功能简单的说就是让组用户或其他用户在执行该文件是拥有文件所有者(own)权限,这里就是需要获取w(写)权限,这样才能将新密码写到/etc/shadow文件中 切记:SUID只对二进制的文件有效(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,SUID也不能放到目录上,放上也是无效的。

    第二种:
    [root@Svr04 ~]# lsattr /etc/shadow
    —-i——–e- /etc/shadow(文件的隐藏属性,具体不扩展),这里需要将i去掉,用chattr -i /etc/shadow
    同样/etc/group /etc/passwd也可能出现该情况。本次是用户/etc/shadow不能扩展,把i属性去掉就可以了。

    第三种:
    虽然出现passwd: 鉴定令牌操作错误,但是密码已经修改了,可以通过cat /etc/shadow去查看,只是该用户被锁定了,这里需要解锁。
    解决方案:
    usermod +U somebody将该用户解锁(/etc/shadow文件中该用户所属第二栏有几个!(惊叹号)就执行几次该指令)

    第四种:
    主机磁盘已满,修改密码是提示:鉴定令牌操作错误
    解决方法:清理磁盘后重新修改密码

    linux企业应用

    CentOS下使用MyTop实时监控MySQL

    MyTop是一个类似Linux下的top命令风格的MySQL监控工具,MyTop采用Perl开发。MyTop可以监控MySQL当前的连接用户和正在执行的命令。

    MyTop的项目页面为:http://jeremy.zawodny.com/mysql/mytop/

    MyTop安装
    $ yum -y install mytop #epel源

    MyTop命令参数

    $ man mytop
    -u / –user <USERNAME>:指定 username,预设是 root
    -p / –pass / –password <PASSWORD>:指定password,预设是none
    -h / –host <HOSTNAME[:PORT]>:指定 MySQL server的hostname,预设是localhost
    -P / –port <PORT>:指定连接 MySQL server的port,预设是3306
    -s / –delay <SECONDS>:更新的秒数,预设是5秒
    -d / –db / –database <DATABASE>:指定连接的资料库,预设是test
    -b / –batch / –batchmode:指定为 batch mode,每次更新不会清除旧的显示结果,会将更新资料显示上最上方,预设是unset
    -S / –socket <PATH_TO_SOCKET>:指定使用MySQL socket直接连线,而不使用TCP/IP连线,预设是none(当mytop和MySQL在同一台时才能使用)
    –header or -noheader:是否要显示表头,预设是header
    –color or –nocolor:是否要使用颜色,预设是color
    -i / -idle or -noidle:idle 的thread是否要出现在清单上,预设是idle

    注意: 因.mytop内有MySQL server的密码,请注意档案权限。
    MyTop的使用

    命令行运行
    $ mytop -uroot -pmysql -d wordpress -h 127.0.0.1

    通过配置文件运行
    MyTop配置文件在~/.mytop,也可在~/.my.cnf文件中配置用户名和密码。

    $ vim ~/.mytop
    user=root
    pass=mysql
    host=localhost
    db=wordpress
    delay=5
    port=3306
    socket=/var/lib/mysql//mysql.sock
    batchmode=0
    header=1
    color=1
    idle=1

    注意:socket设置和my.cnf里的路径一样,一般MyTop和Mysql在同一台机器。

    MyTop远端监控
    若将MyTop装在另一台机器上时,需要设定MySQL Server上的权限才能远端监控
    在MySQL Server上新增一个帐号,并给它Process的权限

    $ mysql -u root -p
    mysql> grant process on *.* to <REMOTE_USERNAME>@<REMOTE_IP> identified by ‘<PASSWORD>’;
    mysql> flush privileges;
    mysql> exit

    在安装MyTop的机器上,用参数指定或修改配置文件的设定。

    参数指定
    $ mytop -u <REMOTE_USERNAME> -p <PASSWORD> -h <MYSQL_SERVER_IP>

    修改配置文件
    $ vim ~/.mytop
    user=<REMOTE_USERNAME>
    pass=<PASSWORD>
    host=<MYSQL_SERVER_IP>

    MyTop快捷键
    s:设定更新时间
    p:暂停画面更新
    q:离开
    u:只看某个使用者的thread
    o:反转排列顺序

    监控画面参数解释
    Mytop和Linux下面的top命令展现的结果类似,下面展示了每个线程的当前的状态并且是动态变化。

    $ mytop -uroot -pmysql -d wordpress -h 127.0.0.1

    MySQL on 127.0.0.1 (5.6.29-log)                                                  up 0+05:44:42 [16:51:31]
    Queries: 654.0  qps:    0 Slow:     0.0         Se/In/Up/De(%):    00/00/00/00
    qps now:    0 Slow qps: 0.0  Threads:    1 (   1/   0) 00/00/00/00
    Key Efficiency: 100.0%  Bps in/out:   0.8/160.4   Now in/out:   9.7/ 2.0k

    Id      User         Host/IP         DB      Time    Cmd Query or State
    —      —-         ——-         —      —-    — ———-
    8      root       localhost  wordpress         0  Query show full processlist

    第一行显示了主机名称,还有至今MySQL的运行时间(以days hour:minutes:seconds为格式)。

    第二、三行的显示了Qps:每秒请求书、Slow:慢查询的数量、Se/In/Up/De(%):读写比例。

    第四行的Key Efficiency就是Myisam的键值缓存区使用比例(缓存命中率),Bps:目前网络进出流量。

    最下方的区域就是目前链接到数据库的各个线程,你可以按k杀死一个线程,或者按f了解特定线程的信息。

    linux企业应用

    ftp自动上传下载文件脚本

    FTP自动登录批量下载文件

    #!/bin/bash
    #
    ftp -v -n IPADDR << EOF
    user youname password
    binary
    cd test
    lcd /home/
    prompt
    mget *
    close
    bye
    EOF

     

    FTP自动登录批量上传文件
    #!/bin/bash
    #
    ftp -v -n IPADDR << EOF
    user youname password
    binary
    cd test
    lcd /home
    prompt
    mput *.txt
    bye
    EOF

    linux视频

    Systemd入门命令

    CentOS 7使用Systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。

    Systemd的特性

    支持并行化任务
    同时采用socket式与D-Bus总线式激活服务
    按需启动守护进程(daemon)
    利用Linux的cgroups监视进程
    支持快照和系统恢复
    维护挂载点和自动挂载点
    各服务间基于依赖关系进行精密控制

    什么是init系统 继续阅读 Systemd入门命令

    linux企业应用

    CentOS 7下使用FirewallD构建防火墙常用命令

    FirewallD介绍

    FirewallD提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持IPv4, IPv6 防火墙设置以及以太网桥接,也支持允许服务或者应用程序直接添加防火墙规则的接口。FirewallD拥有运行时配置和永久配置选项。

    采用firewall-cmd(command)或firewall-config(gui)来动态的管理kernel netfilter的临时或永久的接口规则,并实时生效而无需重启服务。

    FirewallD特性

    Zone

    FirewallD使用区域(zone)的概念来管理,网络区域定义了网络连接的可信等级。这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接。每个网卡对应一个zone,这些zone的配置文件可在/usr/lib/firewalld/zones/下看到,默认的是public。

    Zone提供了以下几个区域

    drop

    任何流入网络的包都被丢弃,不作出任何响应,只允许流出的网络连接。即使开放了某些服务(比如http),这些服务的数据也是不允许通过的。

    block
    任何进入的网络连接都被拒绝,并返回IPv4的icmp-host-prohibited报文或者IPv6的icmp6-adm-prohibited报文。只允许由该系统初始化的网络连接。

    public(默认)
    用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机,只允许选中的服务通过。

    external
    用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机,只允许选中的服务通过。
    继续阅读 CentOS 7下使用FirewallD构建防火墙常用命令

    linux企业应用

    blocked for more than 120 seconds

    “echo 0> /proc/sys/kernel/hung_task_timeout_secs” disables this message
    INFO: task init:106 blocked for more than 120 seconds
    “echo 0> /proc/sys/kernel/hung_task_timeout_secs” disables this message
    INFO: task udevd:91 blocked for more than 120 seconds

    linux会设置40%的可用内存用来做系统cache,当flush数据时,cache数据由于和IO同步问题导致超时(120s),可将40%减小到10%,避免超时。为永久避免这个问题可修改系统配置文件:

    # vim /etc/sysctrl.conf
    vm.dirty_background_ratio = 5
    vm.dirty_ratio = 10

    linux企业应用

    Redhat 6 利用Centos 6的源安装更新bash

    很久没有使用rhel了,今天使用rhel,发现自带的bash无法升级,只能使用centos的了。

    修改/etc/yum.repos.d/rhel-source.repo文件的内容,修改为如下:

     

    # CentOS-Base.repo
    #
    # The mirror system uses the connecting IP address of the client and the
    # update status of each mirror to pick mirrors that are updated to and
    # geographically close to the client.  You should use this for CentOS updates
    # unless you are manually picking other mirrors.
    #
    # If the mirrorlist= does not work for you, as a fall back you can try the
    # remarked out baseurl= line instead.
    #
    #

    [base]
    name=CentOS-6-Base-mirrors.ustc.edu.cn
    baseurl=http://mirrors.ustc.edu.cn/centos/6/os/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=os
    gpgcheck=1
    gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

    #released updates
    [updates]
    name=CentOS-6-Updates-mirrors.ustc.edu.cn
    baseurl=http://mirrors.ustc.edu.cn/centos/6/updates/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=updates
    gpgcheck=1
    gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

    #additional packages that may be useful
    [extras]
    name=CentOS-6-Extras-mirrors.ustc.edu.cn
    baseurl=http://mirrors.ustc.edu.cn/centos/6/extras/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=extras
    gpgcheck=1
    gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

    #additional packages that extend functionality of existing packages
    [centosplus]
    name=CentOS-6-Plus-mirrors.ustc.edu.cn
    baseurl=http://mirrors.ustc.edu.cn/centos/6/centosplus/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=centosplus
    gpgcheck=1
    enabled=0
    gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

    #contrib – packages by Centos Users
    [contrib]
    name=CentOS-6-Contrib-mirrors.ustc.edu.cn
    baseurl=http://mirrors.ustc.edu.cn/centos/6/contrib/$basearch/
    #mirrorlist=http://mirrorlist.centos.org/?release=6&arch=$basearch&repo=contrib
    gpgcheck=1
    enabled=0
    gpgkey=http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-6

     

    然后执行:yum makecache

    再执行:yum -y update bash

    运行:env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”               只返回 this is a test,就说明bash没有漏洞了。

    linux企业应用

    windows server 2012启动黑屏,且进入cmd的解决方法

    今天一客户反应windows server 2012启动后,只有黑屏,且有一个CMD对话框,怀疑客户删东西了。咨询后发现,客户删除framework后,就不能启动了。

    .Net Framework 4.5是Windows Server 2012 中图形化界面(GUI) 的基础,所以出现了这个问题,解决办法也简单,在命令行输入如下命令:Dism /online /enable-feature /all /featurename:Server-Gui-Mgmt /featurename:Server-Gui-Shell /featurename:ServerCore-FullServer    回车后,等待一段时间,提示你是否重新启动计算机?(Y/N)。

    输入Y,系统重新启动。再次进入系统,正常的图形界面了。

     

    linux企业应用

    从haproxy日志里抓取造成 404请求的IP,查询IP位置,记录到文件的脚本。

    从haproxy日志里抓取造成 404请求的IP,查询IP位置,记录到文件的脚本。

    #!/bin/bash
    #search /var/log/haproxy.log for http 404 requests.
    #extract the source ip address.
    #find the location for the ip.
    #store in a logfile.

    if [[ -z $1 ]]; then
    _limit=32
    else
    _limit=$1
    fi
    set -e
    set -u

    _haproxy_log_file=”/var/log/haproxy.log”
    _404_log_file=”/root/haproxy_404.log”

    if [[ ! -f $_404_log_file ]]; then
    touch $_404_log_file
    fi
    _ip_total=`grep ” 404 ” $_haproxy_log_file |grep -v ” 404 -” |awk ‘{print $6}’|awk -F: ‘{print $1}’|sort`
    _ip_single=`echo “$_ip_total” |uniq -c|sort -gr`
    IFS=”

    for x in $_ip_single; do
    _count=`echo “$x”|awk ‘{print $1}’`
    _ip=`echo “$x”   |awk ‘{print $2}’`
    #Pick thost repeating more than $_limit
    if [[ $_count -gt $_limit ]] ; then
    if ! grep $_ip $_404_log_file >/dev/null ; then
    _ip_location=`curl -s http://wap.ip138.com/ip_search138.asp?ip=$_ip|grep “<b>$_ip”|sed “s/<b>//g;s/<\/b>//g;s/<br\/>//g;s/$_ip//g”`
    echo -e “${_ip}\t${_count}\t${_ip_location}” >> $_404_log_file
    sleep 1
    fi
    else
    break
    fi
    done

    set +e
    set +u

    linux企业应用

    ifconfig 属于哪个包

    centos7上安装vmtools,需要安装perl,直接yum -y install perl就可以了。

    但是ifconfig在centos7上默认不在安装了,ifconfig属于net-tools包,而且vmtools必须要使用ifconfig这个命令,所以必须安装net-tools包,yum -y install net-tools即可。

     

    linux企业应用

    通过VIProperty显示主机的HBA,SCSI的信息,并写入EXCEL的代码

    需要提前安装pysphere和XlsxWriter,安装方法,后期再补。

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-

    #导入python未来支持的语言特征division(精确除法)
    from __future__ import division
    from pysphere import VIServer, MORTypes, VIProperty
    from pysphere.resources import VimService_services as VI
    import time
    import sys
    import time,datetime
    from decimal import *
    import threading
    #引入Exls模块
    import xlsxwriter
    #中午12点之前的是8:30的检查,否则是下午16:30的检查
    todayTime=datetime.datetime.now().strftime(‘%p’)
    #print datetime.datetime.now().strftime(‘%Y-%m-%d %H:%M:%S’)
    #print todayTime
    if todayTime == ‘AM’:
    checkTime= ‘0830’
    else:
    checkTime= ‘1630’
    #print checkTime

    todayDate= datetime.datetime.strftime(datetime.date.today(), ‘%Y%m%d’)
    #print todayDate

    excelName=’XXXXXX平台巡检’+todayDate+’-‘+checkTime+’.xlsx’
    #print excelName

    #创建EXCLE表格
    workbook=xlsxwriter.Workbook(excelName)

    #定义format格式对象,小数点后保存2位
    format=workbook.add_format({‘border’: 1,’align’: ‘center’,’valign’: ‘vcenter’})
    format.set_border(1)
    format.set_num_format(‘0.00’)
    #定义一个加粗的格式对象
    bold=workbook.add_format({‘bold’: 1,’border’: 1,’align’: ‘center’,’valign’: ‘vcenter’,’fg_color’: ‘yellow’})
    bold.set_border(1)
    #定义添加边框的格式对象format_border
    format_border=workbook.add_format({‘border’: 1,’align’: ‘center’,’valign’: ‘vcenter’})
    format_border.set_border(1)

    def get_clust_HBA_information(HOST, USER, PASSWORD,excel_Line,worksheet):
    excelLine=excel_Line+1
    server = VIServer()
    server.connect(HOST, USER, PASSWORD)
    #print “开始统计群集资源信息,请稍候……”
    clusters = server.get_clusters()
    #print clusters.items()[1][1]
    for key in clusters.keys():
    #print key
    hosts = server.get_hosts(key)
    #print hosts
    #输出云平台名称和群集名称
    worksheet.merge_range(excelLine,1,excelLine,6, clusters[key],bold)
    excelLine=excelLine+1
    if len(hosts) > 0:
    for host in hosts:
    worksheet.write(excelLine,1,u’WWN号’,bold)
    worksheet.write(excelLine,2,u’卷号’,bold)
    worksheet.write(excelLine,3,u’适配器’,bold)
    excelLine=excelLine+1
    hostProperty = VIProperty(server, host)
    for path in hostProperty.configManager.storageSystem.storageDeviceInfo.plugStoreTopology.path:
    print path.name[-32:]
    worksheet.write(excelLine,1,path.name[-32:],format)
    worksheet.write(excelLine,2, path.lunNumber,format_border)
    worksheet.write(excelLine,3,path.adapter[-6:],format)
    excelLine=excelLine+1

    worksheet.write(excelLine,1,u’卷名’,bold)
    worksheet.write(excelLine,2,u’卷类型’,bold)
    excelLine=excelLine+1
    for lun  in hostProperty.configManager.storageSystem.storageDeviceInfo.scsiLun:
    worksheet.write(excelLine,1,lun.key,format)
    worksheet.write(excelLine,2, lun.lunType,format)
    excelLine=excelLine+1

    worksheet.write(excelLine,1,u’目标数’,bold)
    excelLine=excelLine+1
    for adp  in hostProperty.configManager.storageSystem.storageDeviceInfo.scsiTopology.adapter:
    #print ”  ADAPTER:”, adp.adapter
    if hasattr(adp, “target”):
    worksheet.write(excelLine,1,len(adp.target),format)
    excelLine=excelLine+1
    #print ”  Connected targets:”, len(adp.target)
    else:
    print ”  Connected targets: 0″

    server.disconnect()
    return excelLine

    ########################1、XXXXXX平台##############################
    HOST=”HOSTIP”
    USER=”USERNAME”
    PASSWORD=”PASSWD”
    #############################################################################
    #定义在excel中从那行开始输出信息
    excel_Line=1
    #新建一个worksheet页
    worksheet1=workbook.add_worksheet(u’XXXXXX平台’)
    worksheet1.merge_range(excel_Line,1,excel_Line,6, u’XXXXXXX’,bold)
    #设置excel第1到第6列的宽度为14
    worksheet1.set_column(1,6,14)

    addLine=get_clust_HBA_information(HOST, USER, PASSWORD,excel_Line,worksheet1)
    excel_Line=addLine+1

    workbook.close()

    linux企业应用

    通过VIProperty显示主机的HBA,SCSI的信息

    hostProperty = VIProperty(server, host)
    for path in hostProperty.configManager.storageSystem.storageDeviceInfo.plugStoreTopology.path:
    print ”  Path:”, path.name
    print ”    LUN:”, path.lunNumber
    print ”    Adapter:”, path.adapter
    print “”
    for lun  in hostProperty.configManager.storageSystem.storageDeviceInfo.scsiLun:
    print ”  LUN Name:”, lun.key
    print ”  LUN Type:”, lun.lunType
    print “”
    for adp  in hostProperty.configManager.storageSystem.storageDeviceInfo.scsiTopology.adapter:
    print ”  ADAPTER:”, adp.adapter
    if hasattr(adp, “target”):
    print ”  Connected targets:”, len(adp.target)
    else:
    print ”  Connected targets: 0″

    linux企业应用

    python datetime时间的格式处理

    # -*- coding: utf-8 -*-

    #datetime类
    #datetime是date与time的结合体,包括date与time的所有信息。
    #它的构造函数如下:
    #datetime. datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )
    #各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。

    # 1. datetime类定义的类属性与方法:
    #datetime.min、datetime.max:datetime所能表示的最小值与最大值;
    #print: datetime.max: 9999-12-31 23:59:59.999999
    #print: datetime.min: 0001-01-01 00:00:00
    from  datetime  import  *
    import time
    print   (‘datetime.max:’ +str(datetime.max ))
    print   (‘datetime.min:’ +str(datetime.min))
    #datetime.resolution:datetime最小单位;
    #print: datetime.resolution: 0:00:00.000001
    print   (‘datetime.resolution:’ + str(datetime.resolution ))
    #datetime.today():返回一个表示当前本地时间的datetime对象;
    #print: today(): 2012-09-12 19:37:50.721000
    print   (‘today():’ +str(datetime.today() ))
    #datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
    #print: now(): 2012-09-12 19:37:50.738000
    print   (‘now():’+str( datetime.now() ))
    #datetime.utcnow():返回一个当前utc时间的datetime对象;
    #print: 2012-09-12 11:37:50.739000
    print   (‘utcnow():’ +str(datetime.utcnow() ))
    #datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
    #print: fromtimestamp(tmstmp): 2012-09-12 19:37:50.741000
    print   (‘fromtimestamp(tmstmp):’ +str(datetime.fromtimestamp(time.time()) ))
    #datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
    #print: utcfromtimestamp(tmstmp): 2012-09-12 11:37:50.742000
    print   (‘utcfromtimestamp(tmstmp):’ +str(datetime.utcfromtimestamp(time.time())) )
    #datetime.combine(date, time):根据date和time,创建一个datetime对象;
    #print: datetime.combine(date,time):  2012-09-12 19:46:05
    d = date(2012,9,12)
    from  datetime  import  *
    t = time(19,46,5)
    print (‘datetime.combine(date,time): ‘+str(datetime.combine(d,t)))
    #datetime.strptime(date_string, format):将格式字符串转换为datetime对象;
    #print: 2007-03-04 21:08:12
    print (datetime.strptime(“2007-03-04 21:08:12”, “%Y-%m-%d %H:%M:%S”))

    继续阅读 python datetime时间的格式处理

    linux企业应用

    python发送带各种类型附件的邮件

    如何发送各种类型的附件。
    基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。
    在python中,MIME的这些对象的继承关系如下。
    MIMEBase
    |– MIMENonMultipart
    |– MIMEApplication
    |– MIMEAudio
    |– MIMEImage
    |– MIMEMessage
    |– MIMEText
    |– MIMEMultipart
    一般来说,不会用到MIMEBase,而是直接使用它的继承类。MIMEMultipart有attach方法,而MIMENonMultipart没有,只能被attach。
    MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。
    最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。
    application/octet-stream表明“这是个二进制的文件,希望你们那边知道怎么处理”,然后客户端,比如qq邮箱,收到这个声明后,会根据文件扩展名来猜测。

    下面上代码。
    继续阅读 python发送带各种类型附件的邮件

    linux企业应用

    通过十条命令对机器性能问题进行诊断

    通过十条命令在一分钟内对机器性能问题进行诊断

    通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。

    uptime
    dmesg | tail
    vmstat 1
    mpstat -P ALL 1
    pidstat 1
    iostat -xz 1
    free -m
    sar -n DEV 1
    sar -n TCP,ETCP 1
    top

    其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法。 继续阅读 通过十条命令对机器性能问题进行诊断

    linux企业应用

    合并工作簿下的全部工作表

    Private Sub cmdHeBing_Click()

    Dim i, j, k, line, lineNum As Integer

    ‘Application.ScreenUpdating = False

    ‘设定从哪一行开始显示数据
    i = 2

    ‘将以前的数据删除
    For line = 2 To 1000
    ActiveSheet.Cells(line, 2) = “”
    ActiveSheet.Cells(line, 3) = “”
    Next line

    ‘合并各sheet上的服务器名称和sheet的名字
    For j = 1 To Sheets.Count

    If Sheets(j).Name <> ActiveSheet.Name Then

    ‘X = Range(“A65536”).End(xlUp).Row + 1
    ‘Sheets(j).UsedRange.Copy Cells(X, 1)

    For line = 3 To 500
    If Sheets(j).Cells(line, 2) <> “” Then
    lineNum = line
    Else
    Exit For
    End If
    Next line

    For line = 3 To lineNum
    ActiveSheet.Cells(i, 2) = Sheets(j).Cells(line, 2)
    ActiveSheet.Cells(i, 3) = Sheets(j).Name
    i = i + 1
    Next line

    End If

    Next

    Range(“B1”).Select
    Application.ScreenUpdating = True
    MsgBox “当前工作簿下的全部工作表已经合并完毕!”, vbInformation, “提示”

    End Sub

    linux企业应用

    audit:backlog limit exceeded解决方法

    这种情况系统已经崩溃,先重启。注意重启后还可能会遇到只读的情况,首先了解下只读的原因。要求输入root密码继续那个界面有详细提示只读的原因。有可能是开启了selinux或者是磁盘有坏道等原因导致,可以单用户进服务器后vi /etc/sysconfig/selinux 设置成disabled后重启服务器观察。同时建议重启后进行fsck修复。

    audit 服务对所有的系统调用进行审计操作,

    在配置文件中,排除audit.conf文件中,日志、磁盘空间等配置参数的性能瓶颈!

    最终问题锁定在,audit服务在繁忙的系统中进行审计事件操作,缓冲瓶颈!

    增加audit.rules 的-b 选项,8192kb,(此值,要根据系统buffer值,适当分配—考虑到其它应用对全系统buffer的使用)。

    cat /etc/audit/audit.rules

    修改audit参数,如下:

    [root@ localhost]# auditctl -b 8192
    AUDIT_STATUS: enabled=1 flag=1 pid=6118 rate_limit=0 backlog_limit=8192 lost=0 backlog=1

    linux企业应用

    Centos7 网络命令

    网卡以en开头,WLAN以wl开头,WWAN以WW开头
    o是on-board,s是热插拔口的网卡,p是PCI接口的网卡,
    后面的是数字是一个索引,ID,或端口

    ip addr show ens32 :显示网卡ens32的网络ip信息
    ip addr
    ip link
    ip route
    ip -s link show ens32

    tracepath www.taobao.com
    traceroute www.taobao.com

    ss -ta 代替netstat,ss 的用法和netstat一样

    显示系统有几个网络连接:nmcli con show
    看网络配置:ifconfig ens32
    nmcli con show “ens32”

    显示设备网络状态:nmcli dev status
    nmcli dev show ens32