SSH远程监控OGG进程状态<EOF执行

其实我对这个东西的用法理解也不深,目前也只用过两次,但真的可以解决大问题。

通过Java的SSH方式可以便利的执行各种shell脚本,让程序员解脱每次查询问题都要登录到linux服务器的情况
先说一下<<efo的作用,官方的说法是这样的:在shell脚本中(bash编程),<<EOF表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell。而EOF可以换成任何其他字符都可以。
我的的理解是这样的:当想自动完成一个程序的输入的时候就可以用这个方法,举例说明吧。

1、OGG远程监控执行脚本命令:

SSH执行oracle环境变量命令,在通过执行oracle环境变量,在到ogg19.1目前下执行/ggsci,再尔开始脚本命令行

 ——————————————————本次查询语句为:
source /home/oracle/.bash_profile&&/zoedata/ogg19.1//ggsci
<<EOF
info all
quit 
EOF

2、挂在磁盘监控的bash脚本命令


比如想自动完成树莓派centos系统空间自动扩容(当然现在有更简单的办法,这只是个思路)。一般是用fdisk然后按向导来,如果用脚本自动完成就是这个样子:

#!/bin/bash
fdisk /dev/mmcblk0  <<eof
d
3
n
p 
3
w
eof


看起是不是一脸懵,但就是这样,上面完成的是如下向导的操作:
fdisk /dev/mmcblk0
执行命令:d (删除分区命令)
输入:3 (删除第3个分区)
执行命令:n (加分区)
执行命令:p (主要分区)
直接回车默认(第一次)
直接回车默认(第二次)
(所在脚本里那两个空行不可少)
执行命令:w(存盘)
eof结束输入退出
efo退出fdisk


3、在做树莓派连接蓝牙模块

派和蓝牙是同时给电的,但派给完电要等一会才能完成启动,如果蓝牙模块能够自动回连还好,

如果不能回连就要用到这个方法了,因为要启动bluetoothctl后进行l输入命令操作,具体如下:

#!/bin/bash
bluetoothctl <<eof
connect F1:DB:7C:FB:8D:8F
quite
eof


上面的代码是已手动连接过的代码,不然不行。表示的意思就是:
bluetoothctl 启动蓝牙控制台
connect F1:DB:7C:FB:8D:8F连接该地址的蓝牙设备
quite 退出蓝牙控制台
eof 结束输入退出。

====Shell脚本OGG监控记录===

开发监控模块加人对ogg基本监控指标,监控软件每次调用只需要获取1行字符串结果,直接保存到结果表中,写了个简单ogg定期保存ogg状态 延时结果数据

[oracle@db ~]$ more ogg_process.sh 

#!/bin/bash 
######配置Oracle环境变量#########
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.3/db_1
export PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/jdk/bin


######配置ogg环境变量#######
export OGG_HOME=/ogg
export PATH=$OGG_HOME:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LOGFILE=/home/oracle/ogg.log
export tmpfile=/tmp/oggtemp
cd $OGG_HOME
date -d today +"%Y-%m-%d %H:%M:%S" > $tmpfile 
(echo info all;echo exit)|./ggsci|grep -E "EXTRACT|REPLICAT" |awk 'BEGIN {FS=" +"} {print $1,$3,$2,$4,$5}' >> $tmpfile
#多行合并
cat $tmpfile  |awk BEGIN{RS=EOF}'{gsub(/\n/," ; ");print}' > $LOGFILE

====Linux命令执行顺序— ||和&&和;===扩展

Linux命令执行顺序— ||和&&和;
 
command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行。
command1 || command2: 如果||左边的command1执行失败(返回1表示失败),就执行&&右边的command2。
command1;command2: 命令顺序执行
 
//第一个命令执行不成功,第二个命令才执行
[tough@toughhou shell]cata||touchacat:a:Nosuchfileordirectory[tough@toughhoushell]  ls
 a  getpath.sh
 
//第一个命令执行成功,第二个命令不执行
[tough@toughhou shell]cata||touchb[tough@toughhoushell]  ls
 a  getpath.sh
 
//只有第一个命令(touch a)执行成功,才执行第二个命令(touch b)
 [tough@toughhou shell]touch a && touch b
    [tough@toughhou shell] ls
 a  b  getpath.sh
 
//因为第一个命令执行不成功,所以第二个命令没执行
[tough@toughhou shell]cat a1 && touch c
    cat: a1: No such file or directory
    [tough@toughhou shell] ls
 a  b  getpath.sh
 
//命令顺序执行
[tough@toughhou shell]$ pwd;more a;date
 /home/tough/shell
 123
 Sun Oct 13 10:24:55 CST 2013 <br><br><br>

刚才输入命令 echo "This is file content, over!" > filename 竟然会出错,提示:

bash:  !": event not found

原来字符串中的!会被解析。如果不出错的话呢,转义!就可以了,如 \! ,

或者把双引号改成单引号也行。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值