在系统bin目录中建立两个脚本分别是pssh tssh pssh #!/usr/bin/expect -f set ip [lindex ] set port [lindex ] set password [lindex ]set uname [lindex $argv 3 ] set timeout spawn ssh root@$ip -p$port expect { "*yes/no" { send "yes\r"; exp_continue} "*…
关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列, Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. N…
效果图如下: #!/bin/bash# while truedocat << EOF//======================\\\\| 用户登录系统 |--------------------------| 1.创建用户 || 2.删除用户 || 3.锁定用户 || 4.解锁用户 || 5.查看用户 || 6.退出脚本 |--------------------------EOF read -p "请输入你的操作选择:" num#输入为1时的判断if [ "…
在一些对安全性要求较高的场景下.ssh的超时时间是管理员预先设置好的,在闲置一段时间后ssh连接会自己主动断开. 这样的情况下假设通过ssh运行脚本,而脚本运行时间又比較长的话.会导致sshclient和server长时间无交互而超时,命令运行失败. 使用bash子进程能够解决这样的问题,思路是由子进程运行详细的逻辑代码,而由主进程来监控子进程的运行状态,同一时候向控制台输出字符来keep alive. bash创建子进程有多重方式.这里使用"()",然后用"&&qu…
在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列. 所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态.安装完成后,在nagios主目录…
ssh连接远程主机时候询问密码,跟su.sudo命令的默认行为一样,是不从stdin读入数据的,据称是为安全考虑,但是有时候在脚本当中确实需要无人守值的登陆. 搜索一下不难找到类似的例子,使用expect来完成密码应答: #!/bin/bash auto_login_ssh () { expect -c "set timeout -1; spawn -noecho ${@:}; expect *assword:*; send -- $\r; interact;"; } auto_log…
Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法. 先从expr命令开始梳理,expr 引出通用求值表达式,可以实现算术操作.比较操作.字符串操作和逻辑操作等功能. 1) 计算字符串长度字符串名为string,可以使用命令 ${#string} 或 expr length ${string} 两种方法来计算字符串的长度.若string中包括空格,…
更多shell脚本参考:https://blog.51cto.com/zero01/2046242 1.拒绝密码撞库攻击的ip shell脚本:实现对登录主机失败10次以上的ip进行拒绝登录 #! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt for i in `cat /usr/l…
shell脚本中case选择语句可以结合read指令实现比较好的交互应答操作,case接收到read指令传入的一个或多个参数,然后case根据参数做选择操作. case的语法如下 case $char in C | c ) command ;; #每一个选择都以双 ;; 结束 M | m ) command ;; * ) # * 未匹配到相符的其他值 echo “error” ;; esac #case的结束语句是以esac 结束 下面结合一个简单的小功能使用,脚本中同时也用到了函数的方法:简单…
一.”一切皆文件“与“管道” 1)管道:grep foo /path/to/file | grep -n -k 3 | more 实际过程与我们直观认为的相反,最好通过实际过程理解.首先运行的是more,它的输入被连接至一个管道.然后是sort,并且其输出被连接至之前的那个管道.接着创建第二个管道,并且将sort的stdin连接至该管道.最后执行grep,将其stdout连接至与sort进程相连的那个管道. 当grep开始运行并输出数据时,数据顺着管道流向sort,sort处理后顺着管道输出到m…
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们通常还是工作在,几十台上百台服务器这样的环境,而使用ansible或者puppet这样的自动化运维工具则显得大材小用,并且最终的效果可能还不如几个小工具达到的效果好.像ssh免密登录在配合pssh这样的推送工具,在配合自动化配置脚本,可以说是即方便也使用.这一节将详细带大家以shell脚本的形式实现…
假设你也是以Linux 为工作环境的童鞋,那么此文真是捷报!由于我的学习/工作中(特别是近期玩耍树莓派)常常会使用到ssh 登录其它主机,而每次使用ssh 登录都须要输入老长一大串让我非常烦.所以我写了这个脚本来简化我的ssh 过程. 使用这个脚本.假设我想登录一台机器.我仅仅要使用 $~/easy_ssh.sh 然后选择一项就可登录,即使当前没有我要登录的机器选项.我仅仅要输入一次并保存,以后我也能够非常快的登录到这台电脑. #!/bin/bash # (C) 2014 Yunlong Zho…
经常在工作中需要切换到不同的服务器去部署,或者查看日志,每次登录都要去找对应的IP和地址,非常麻烦,最终决定使用iterm2+脚本来实现自动登录. 1.iterm2(下载安装不再介绍http://www.iterm2.com/downloads.html) iterm2->Perferences->Profiles 方法一: command:expect 脚本路径 以下为脚本内容: #!/usr/bin/expect -f set user root set host 10.0.0.1 set…
原文地址:http://www.open-open.com/lib/view/open1384351384024.html 1. SSH简介         SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接.SSH提供两种的安全验证方式:基于密码的认证和基于密匙的认证.其中,基于密码的认证比较简单,只要知道远程主机的用户名和密码,就可以进行登录.基于密匙的认证比较麻烦,而且连接比…
1. SSH简介         SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接.SSH提供两种的安全验证方式:基于密码的认证和基于密匙的认证.其中,基于密码的认证比较简单,只要知道远程主机的用户名和密码,就可以进行登录.基于密匙的认证比较麻烦,而且连接比较耗时,这里不详细介绍.         有很多基于SSH协议的客户端,例如:PuTTY.OpenSSH.Xshell 4等…
1.引子 前几天有一个需求是这样的:本机的shell脚本,通过远程调用另一台机子上的shell脚本,来完成对远程机子上分发的Java程序的执行和其他操作.看上去挺容易,实际上也不难. 第一步:用scp从本机向目的机子分发Java程序: 第二步:编写shell脚本,用ssh完成调用. 然而,问题来了. 2.分析 先声明:第一,Local和Remote两个机子上的JDK安装路径.环境变量(都配置在.bash_profile中).使用的版本统统一样:第二,Java程序在Remote机上用shell脚本…
日常运维工作中,需要给几十上百台服务器批量部署软件或者是重启服务器等操作, 这样大量重复性的工作一定很苦恼,本文给大家提供了最基本的批量操作的方法,虽然效率不高,对于初学者来说还是好理解.由于刚开始学习写脚本,什么 puppt这样的高级工具还不会使用,就简单的利用shell脚本.ssh-keygen.expect来实现.希望能给各位带来帮助,不足之处还请留言 指出,大家共同进步. 首先,需要检查expect是否安装:rpm -qa|grep expect 然后,在操作机上创建公钥:ssh-key…
shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi 多分支 if 判断条件 1 ; then 条件为真的分支代码 elif 判断条件 2 ; then 条件为真的分支代码 elif 判断条件 3 ; then 条…
说假设有一个1000台节点的Hadoop集群,要配置节点之间的SSH免密码登录,该如何用shell脚本实现?#!/bin/expect #循环1000台机器的IP地址,生成密钥文件authorized_keys for ip in {cat ip.list}do    ssh user@$ip ssh-keygen -t rsa  &>/dev/null    expect{                "yes/no" { send "yes\r"…
如果PC上连接多部Android设备(包括Android模拟器),在进入Console时还需要使用adb -s deviceid shell.比较麻烦,本文为此编写了一个Shell脚本文件(需要在Linux或OS X下才能使用,windows下需要用bat或cmd从新编写).      基本思路时先用adb devices命令扫描有多少Android设备连接到PC上,然后从返回值中截取设备名称,并显示一个菜单.最后用户可以选择菜单项前面的序号进入指定的Android设备.无需再输入devicei…