Expect详解(ssh自动登录)
Expect是一个用来处理交互的命令。借助Expect,我们可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh登录,ftp登录等都符合交互的定义。下文我们首先提出一个问题,然后介绍基础知四个命令,最后提出解决方法。 Expect中最关键的四个命令是send,expect,spawn,interact。 send:用于向进程发送字符串expect:从进程接收字符串spawn:启动新的进程interact:允许用户交互 1. send命令send命令接收一个字符串参数,并将该参数发送到进程。 expect1.1> send “hello world\n”hello world 2. expect命令(1)基础知识expect命令和send命令正好相反,expect通常是用来等待一个进程的反馈。expect可以接收一个字符串参数,也可以接收正则表达式参数。和上文的send命令结合,现在我们可以看一个最简单的交互式的例子: expect “hi\n”send “hello there!\n” 这两行代码的意思是:从标准输入中等到hi和换行键后,向标准输出输出hello ...
Python os.system的结果不能赋值到变量
今天在学习python os模块的system方法时,发现不能赋值给变量,具体操作如下 后来查询得知有更新的模块,如下: os.systemos.spawn*os.popen*popen2.*commands.* 重新使用a = os.popen(‘df -hT’).read() 就能获取到啦。
Git 代码拉取、同步、通知
代码托管到gtihub,开发人员进行本地修改push到仓库后,这里使用pull在web服务器上定期拉去代码至开发开发服务器 more code_sync_template.sh#!/bin/shupdate_dir=”/home/demo/“ #every time upload code main dirwebroot=”/var/www/template”#bak_dir=”/codedata/bak/deploy” #backup file main dirgibin=”/usr/bin/git” #git bin pathrsync_bin=”/usr/bin/rsync” #rsync path#这个变量定义的是代码拉取到本地之后同步到web目录时过排除一些特定的文件#rsync_exclude=”.svn|.gz|.cache|.txt|.git|_tmp|temp|pma|dsn.php|gem*|global_config.php“Name=”template”LOG=”/var/log/code_sync_template.log”TIME=`date +%F...
Python发送邮件(邮件内容从文件读入)
有个需求,利用python脚本发出来的邮件的内容是从文件读取的。并且保持这个文件原有的格式。 #!/usr/bin/env python#-*- coding: UTF-8 -*-import smtplib,os,sysfrom email.mime.text import MIMEText mailto_list=[‘guomaoqiu@gmail.com‘]mail_host=’smtp.qq.com’mail_port=’25’mail_user=’2399447849’mail_pass=’xxxxxxxxx’ #->你懂的…mail_postfix=’qq.com’ filename = “/tmp/test.log” #->将要读取作为邮件内容的文件 fo = open(filename,”rb”)filecon = fo.read();str1 = “{0}“.format(filecon) def send_mail(to_list,sub,content): me=”Code Sync Notice”+”<”+mail_us...
Python链接mysql数据库的一些操作
一、实验规划 1、首先实验之前,我们需要提前创建一个数据库TESTDB,然后授一个用户test管理该数据库,这里我设置的密码是test123; 2、要用python链接数据库需要用到第三方法模块MySQLdb; 3、利用python脚本对数据库做一些简单操作; 二、安装第三方模块MySQLdb. 1、获取模块 wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip 2、解压,安装 unzip MySQL-python-1.2.5.zipcd MySQL-python-1.2.5python setup.py buildpython setup.py install 3、检查安装情况,进入python命令行执行 import,如果不报出任何信息说明成功安装并且导入成功 demo@demo:~$ pythonPython 2.7.9 (default, Apr 2 2015, 15:33:21)[GCC 4.9.2] on linux2Type “help”, “copyr...
Seafile-个人/团队/公司专属私有文件同步服务 (云存储网盘)
一、简介: seafile 是由国内团队开发的一个国际化的开源云存储软件项目,目前据说已有10万左右的用户,典型的机构用户包括比利时的皇家自然科学博物馆、德国的 Wuppertal 气候、能源研究所等等。Seafile 同时提供了客户端和服务器端软件免费下载,任何个人或公司都能搭建属于自己的私有文件同步服务。Seafile 的服务器端支持 Linux 、Windows 以及树莓派平台,客户端除了网页版之外,还支持 Mac、Linux、Windows 三个桌面平台以及 Android 和 iOS 两个移动平台。你可以利用局域网里的一台电脑作为服务器,搭建一个仅局域网内部能访问的专有云存储服务,也能将 Seafile 部署到互联网上的诸如阿里云、Linode 或任何 VPS、独立服务器上,实现一个私人的在线云存储服务。 同时,Seafile 支持用户同时使用多个同步服务器,而且能够在不同服务器之间切换。比如,用户可以用公司服务器来同步工作文件,用个人服务器与朋友共享私人文件,两者互不干扰,私密性也可保证。而且,由于 Seafile 是开源的项目,因此相对来说数据的私密性还是...
学习SaltStack小记—第三章《Pillar使用方法》
1.要启用pillar,首先要修改master中的配置[root@salt-master pillar]# vim /etc/salt/master pillar_roots: base: - /salt/pillar 2.重启master[root@salt-master pillar]# systemctl restar salt-master 3.是存放在master端,默认位置/srv/pillar,需要新建目录。和salt sls类似,也是需要top.slsmkdir /srv/pillar 4.在/srv/pillar目录中创建一个top.sls文件[root@salt-master pillar]# vim top.sls #内容如下: base: 'node2.example.com': #指定的主机 - sc #调用sc模版中的值 5.在/srv/pillar中创建一个sc.sls文件[root@salt-master pillar]# vim sc.sls...
学习SaltStack小记—第二章《编写配置及应用》
上次记录了一下salt的安装和配置,下面记录一下如何去编写一个配置并且应用到minion. SaltStack默认的配置文件路径在/srv/slat下,如果没有这个目录就新建个。如果不确定可以打开Master的主配置文件看下。 在master主配置文件中,打开一下三行的注释,这就是salt的默认配置路径。 这里默认配置文件是注释了的,如果需要直接取消注释就行了。 切记,每次修改了配置文件都要重启服务 下面以两个需求为例子进行学习: a.在minion上面安装httpd服务,并且启动之 b.自建index.html文件,在master端应用配置完成后直接访问minion的http服务,在浏览器中显示我自定的index.html文件内容 额,刚开始学习这个的时候配置文件编写很是一件头疼的事情; 一、配置文件说明 1.引导配置文件 top.sls saltstack的第一个配置文件默认为top.sls,是位于/srv/salt/目录下的,当然这不是绝对的,可以修改配置文件的哦。这个文件是必须要有的。 例如: [root@saltstack-node1 salt]# more top....
学习SaltStack小记---第一章《安装及简单测试》
一、什么是saltstack Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等. SaltStack 是继 Puppet、Chef 之后新出现的配置管理及远程执行工具, 目前,SaltStack 正得到越来越多的瞩目。与 Puppet 相比,SaltStack 没有那么笨重,感觉较为轻量;不像 Puppet 有 一套自己的 DSL 用来写配置,SaltStack 使用 YAML 作为配置文件格式,写 起来既简单又容易,同时也便于动态生成;此外,SaltStack 在远程执行命令 时的速度非常快,也包含丰富的模块。 官方站点:http://www.saltstack.com/ 官方文档:http://docs.saltstack.com/ 中文站点:http://www.saltstack.cn/ 中文手册:http://docs.saltstack.cn/ 中文wiki:http://wiki.saltstack.c...
Linux系统初始化脚本
我们在安装好操作系统后一般都需要对系统做一些针对于自己环境的情况做一下系统初始化,这个我们一般用shell脚本来跑一遍,把相关的参数、配置调整一下就好了。使用下面这个脚本就可以初始化我们系统啦。 #!/bin/bash#Version 1.9#Auth: guomaoqiu#For CentOS_mini#Made on 2015-06-19 echo “ “echo “#############################################################################”echo “# Initialize for the CentOS 6.4/6.5 mini_installed. #”echo “# #”echo “# Please affirm this OS connected net already before ru...
通过 Ulimit 改善系统性能
概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit 的功能,使用以及它的影响,并以具体的例子来详细地阐述它在限制资源使用方面的影响。 ulimit 的功能和用法 ulimit 功能简述 假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时打开了 500 个文档,而假设每个文档的大小有 10M,这时系统的内存资源就会受到巨大的挑战。 而实际应用的环境要比这种假设复杂的多,例如在一个嵌入式开发环境中,各方面的资源都是非常紧缺的,对于开启文件描述符的数量,分配堆栈的大小,CPU 时间,虚拟内存大小,等等,都有非常严格的要求。资源的合理限制和分配,不仅仅是保证系统可用性的必要条件,也与系统上软件运行的性能有着密不可分的联系。...
数据库链接超时,可能原因由于空间不足造成
今天开发人员告知,测试服务器数据库链接超时 我登录测试服务器1、检查mysql运行状态,结果:正常 通过执行ss -tunl | grep “3306” 以及 ps aux | grep “mysqld” 来判定2、检查mysql日志,结果:正常 通过查看mysql的错误日志3、由于系统用的是CentOS7 于是乎通过另外一种方式查看mysql的状态systemctl status mysqld可以看出来,虽然连接数据库时出现了点问题,但是mysql 并未停止运行。 解决办法:清理磁盘空间,为mysql数据 所在分区腾出空间。
Vsftp-虚拟用户设置不同权限
1.system versionCentOS Linux release 7.2.1511 (Core) 2.install vsftpdyum install -y vsftpd 3.create rootdirmkdir /data/program/ftpdata && chmod a-w /data/program/ftpdata/ 4.create local user(for map to virtualuser)useradd -s /sbin/nologin -d /data/program/ftpdata ftpuser 5.install db(for auth)yum install -y db* 6.create virtual userscd /etc/vsftpd/ vim virtualuser.txt user1 # this username 1234qwer # this password user2 # this username 123.com # this password 7.create db...
Vim Nginx配置文件语法高亮
我们在编辑配置nginx的配置文件时,由于他没有高亮的功能,但是nginx官方是支持这个功能的;要想在编辑配置nginx配置文件的时候高亮语法以降低配置的错误发生率可移执行这个小脚本而到达目的: #!/bin/bashmkdir -p ~/.vim/syntax && cd ~/.vim/syntaxwget http://www.vim.org/scripts/download\_script.php?src\_id=14376 -O nginx.vim >/dev/nullecho “au BufRead,BufNewFile /usr/local/webserver/nginx/conf/* set ft=nginx” > ~/.vim/filetype.vim#其中路径/usr/local/webserver/nginx/conf/*为你的nginx.conf文件路径
Zabbix 清理过久的历史信息
当我们的zabbix运行时间久了,监控的节点多了,数据信息会增长的很快,想备份里面的数据库时,要浪费大量的时间,zabbix里面最大的表就是历史记录的表了,网上很多人都是写全部清空这些表的数据,其实我们可以按时间来删除里面的历史记录; 里面最大的表是 “history” 和 “history_uint”两个表; zabbix里面的时间是用的时间戳方式记录,我们可以转换一下,然后根据时间戳来删除; 比如要删除2012年的11月25号以前的数据 1、先将标准时间转换为时间戳 # date +%s -d “2012-11-25 00:00:00”1353772800 2、mysql清理数据 mysql> use zabbix;mysql> DELETE FROM `history_uint` WHERE `clock` < 1327939201;mysql> optimize table history_uint; 注:执行过第二行命令之后可能会需要很长的一段时间,中间不要K掉了,否则容易丢失数据的。
LVS+Keepalived
说明: 本文档仅围绕lvs+keepalived如何实现负载均衡、故障剔除、后端realserver健康监测、主备切换邮件通知;而防火墙、网络(路由交换)、后端数据存储、内外网暂未考虑; 一、环境准备: 1.操作系统 CentOS6.4-x86_64 2.软件版本: ipvsadm-1.25-10.el6.x86_64keepalived-1.2.7-3.el6.x86_64httpd-2.2.15-26.el6.centos.x86_64 3.实验拓扑: 4.时间同步: 123456789101112node1:\[root@node1 ~\]# ntpdate 203.117.180.36\[root@node1 ~\]# echo "*/10 * * * * /usr/sbin/ntpdate 203.117.180.36" >> /etc/crontabnode2:\[root@node2 ~\]# ntpdate 203.117.180.36\[root@node1 ~\]# echo "*/10 * * * * /usr/sbin/ntpdate 203...
Tomcat环境搭建及jsp站点实现
安装JDK(配置java环境): 环境:CentOS6.5_x86-64bit 一、先安装JVM 1.使用7版本的jdk(到官网下载相应的软件包到本地http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jre-7u9-oth-JPR) [root@localhost ~]# rpm -ivh jdk-7u9-linux-x64.rpmPreparing… ########################################### [100%]1:jdk ########################################### [100%]Unpacking JAR files…rt.jar…Error: Could not open input file: /usr/java/jdk1.7.0_09/jre/lib/rt.packjsse.jar..Error: Could not open in...
Snmp协议详解
监控主机的方式: 1.基于通行的snmp 2.基于专用agent 3.基于ssh(shell) 对于不同的监控指标,最后实现的功能也有所不同.下面是本人通过学习总结关于与snmp协议的一些解释以及运用 SNMP 主要几个简单的操作就可以实现对远程设备上的服务、资源等各种系统状态信息的获取,不仅仅是获取信息这么简单,还能在达到我们设定值或状态状态发生转换时能向对方发送控制指令; SNMP的工作机制: 监控端/一个或多个被监控端 监控端:NMS,这个平台会为管理员提供命令行接口,可以发送snmp指令到任何一个被监控主机,而在被监控端安装了一个服务进程,它用于接收来自监控端的查询请求, 并且能够解析对方的查询请求,并将查询数据返回给对方,所以这个服务进程可以称之为是一个agent,它只是接收一些查询或者是管理指令而存在的; 监控端发送请求—>agent接受请求(根据查询请求内容)—>agent返回查询请求到监控端. 但是上面有个弊端,也就是说任何主机连接到我们的agent就可以发送指令,这样一来安全方面就有了很大的隐患,于是在此基础上面就引入了communities在监控端...