半自动化运维之快速连接到指定环境(一) (r5笔记第61天)

在大量的分布式环境中,可能存在着大量的主机配置,ip配置,数据库实例配置,甚至操作系统用户,数据库用户密码也不同,这个时候如果记录在10条左右还能应付,但是如果给你几百个这样的环境,每次都需要先查找对应的操作系统用户,主机名或者IP就显得很麻烦,尽管已经设置了ssh信任连接。但是还是需要你知道用户名的前提下来操作。 对于数据库的连接也是如此,你可以使用tnsping来得到对应的主机名,但是还需要费些功夫在查找对应的数据库用户名密码上,因为知道主机名可能变得没有那么重要,我们可能只需要在客户端连接即可。 如果要想把这些操作变为一个更快捷轻松的方式,使用配置文件就是一个不错的选择,有很多自动化实现脚本是把这些配置信息放在数据库表中,在需要的时候查取,过滤等等。 其实我们也可以在配置文件中进行信息的简单过滤就可以避免去连接数据库(因为数据库环境也有可能不可用) 这个时候使用awk就是一个不错的选择。其实sed+awk能够实现很多复杂的功能,我就次抛砖引玉,做一个粗泛的例子来说明一下。 假设我们使用了配置文件hosts.lst 内容如下: oel1 192.168.27.130 TEST11G ora11g n1 n1 oel1 192.168.27.130 DG11G ora11g n1 n1 oel2 192.168.28.131 ORA11G ora11g n1 n1 分别代表的含义就是主机名,主机Ip地址,数据库实例名,操作系统用户,数据库用户名,数据库用户密码 假设我们只知道数据库实例,这种场景可能比较多。我们只是想连接到指定的数据库实例,这个时候使用sqlplus即可。 又或者我们知道主机名和数据库实例名,我们需要连接到服务器上去做一些操作,就可以使用ssh来完成,ssh信任关系是需要提前配置的。 我们可以使用如下的脚本来完成这两个功能,当然继续扩展也是可以的。

if [ $# -eq 1 ]
then
cc_inst=$1
cat hosts.lst |awk '
BEGIN{
IGNORECASE=1
cc_inst="'$cc_inst'"
cc_index=1
}
{
if ($3== cc_inst )
{
print cc_index,$1,$2 $3,$4,  "\n sqlplus " $5"/"$6"@"$3
cc_index=cc_index+1
}
}'
fi

if [ $# -eq 2 ]
then
cc_hosts=$1
cat hosts.lst |awk '
BEGIN{
IGNORECASE=1
cc_inst="'$2'"
cc_hosts="'$cc_hosts'"
cc_index=1
}
{
if ($1== cc_hosts && $3==cc_inst)
{
print cc_index,$1,$2 $3,$4,  "\n ssh  " $4"@"$1
cc_index=cc_index+1
}
}'
fi

简单演示一下。 比如我们需要连接至TEST11G这个数据块实例。

$ ksh con.sh test11g
1 oel1 192.168.27.130TEST11G ora11g 
 sqlplus n1/n1@TEST11G

比如我们知道主机名为oel1,数据库实例为test11g

$ ksh con.sh oel1 test11g
1 oel1 192.168.27.130TEST11G ora11g 
 ssh  ora11g@oel1

如果观察仔细,会发现其实这个过滤中已经设置了大小写不敏感。对于这两个功能是通过输入参数来进行区分的,如果输入参数为1个,即进行第一个场景的处理,如果为2个,则进行主机名和数据库实例名的过滤和处理。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏自由而无用的灵魂的碎碎念

将MySQL数据迁移到Oracle

因为项目的原因,今晚将mysql数据库的内容尝试迁移到oracle,虽然结果失败,不过学到了不少,下次就不一定了,哈哈

32010
来自专栏北京马哥教育

MySQL/MariaDB数据库备份与恢复

前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一 些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们...

61760
来自专栏转载gongluck的CSDN博客

linux平台下的写文件刷新

c语言libc库自带的fflush和linux的sync、fsync、fdatasync,字面上都是刷新缓冲区数据到磁盘(当然,fflush还可以刷新缓冲区数据...

42350
来自专栏蓝天

MYSQL完整安装和主从双机配置

################################# mysql 完整安装 ########################### groupad...

8710
来自专栏互联网大杂烩

海量数据解决方案

缓存:将从数据库中获取的结果暂时保存起来,在下次使用时无需重新到数据库中获取。 页面静态化:将程序最后生成的页面保存起来。

14830
来自专栏深度学习之tensorflow实战篇

Centos7.4 版本环境下安装Mysql5.7操作记录

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MyS...

37590
来自专栏电光石火

开启MySQL的binlog日志

binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等...

51380
来自专栏Web 开发

服务迁移导致数据差异

通常我在dnspod里面,设置的解析缓存时间很短,基本上我修改DNS,是马上生效的。但毕竟用户的DNS不在我们的控制范围,总会有用户解析到旧的服务器上面,杯具就...

12000
来自专栏菜鸟致敬

MySQL 选择数据库

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。 ---- 从命令提示窗口中选择MySQL数据库 在 mysql>...

353100
来自专栏DeveWork

WordPress自动在uploads文件夹内创建子文件夹

在开发主题或者插件的时候,经常要创建一个自定义的文件夹,我经常使用的一种方法就是在插件或主题安装的时候,先让程序自动到某个文件夹下先检测这个文件夹是否存在,如果...

20350

扫码关注云+社区

领取腾讯云代金券