半自动化运维之快速连接到指定环境(一) (r5笔记第61天)
发布日期:2021-06-30 13:26:07 浏览次数:2 分类:技术文章

本文共 1515 字,大约阅读时间需要 5 分钟。

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

IGNORECASE=1cc_inst="'$cc_inst'"cc_index=1}{
if ($3== cc_inst ){
print cc_index,$1,$2 $3,$4, "\n sqlplus " $5"/"$6"@"$3cc_index=cc_index+1}}'fiif [ $# -eq 2 ]thencc_hosts=$1cat hosts.lst |awk 'BEGIN{
IGNORECASE=1cc_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"@"$1cc_index=cc_index+1}}'fi简单演示一下。比如我们需要连接至TEST11G这个数据块实例。$ ksh con.sh test11g1 oel1 192.168.27.130TEST11G ora11g sqlplus n1/n1@TEST11G比如我们知道主机名为oel1,数据库实例为test11g$ ksh con.sh oel1 test11g1 oel1 192.168.27.130TEST11G ora11g ssh ora11g@oel1如果观察仔细,会发现其实这个过滤中已经设置了大小写不敏感。对于这两个功能是通过输入参数来进行区分的,如果输入参数为1个,即进行第一个场景的处理,如果为2个,则进行主机名和数据库实例名的过滤和处理。

转载地址:https://jeanron100.blog.csdn.net/article/details/102506522 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:pl/sql中的forall简单测试(r5笔记第63天)
下一篇:人的力量和大自然的力量 (r5笔记第59天)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年05月02日 20时13分44秒