对于tnsping的一些小问题,自己也想了些办法来补充,最后发现使用nc是一个不错的选择。
主要思想如下:
如果网络是通的,那么会显示succeeded,否则会有一些错误信息
# nc -w 2  -v 10.11.65.111 22|grep succ
Connection to 10.11.65.111 22 port [tcp/ssh] succeeded!
# nc -w 2  -v 10.11.65.191 22|grep succ
nc: connect to 10.11.65.191 port 22 (tcp) timed out: Operation now in progress
所以我们需要改进tnsping就会很自然的想到解析tnsnames.ora这个文件,当然解析起来会有一些问题,比如你碰到下面的两种格式的配置,就会有些迷茫了。
test1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.2.129)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = peak)
    )
  )

test2=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.64.161)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = accdb0)(server=dedicated)))
对于这种格式,解析起来就会非常吃力。可能会想到很多复杂的逻辑和判断,我差点写一个Java程序来解析了。
最后发现还是简单一些,这两种格式的共同之处就是HOST,PORT都在一行,而这也是我们定义tnsnames.ora文件的基本格式规范。
明白了这点我们解析起来就容易多了。
通过 grep -i 'TCP\|HOST\|PORT' tnsnames.ora 解析到的就是我们需要的内容了。
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.55.31)(PORT = 1523))
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.133.128)(PORT = 1529))
       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.133.71)(PORT = 1528))
而在这个基础上我们进行过滤,转换,就写了下面的一个命令,一气呵成。
 grep -i 'TCP\|HOST\|PORT' tnsnames.ora|grep -v \#|awk -FHOST '{print $2}'|sed 's/PORT//g'|awk -F= '{print  $2 $3}'|sed -e 's/CONNECT_DATA//g' -e 's/(//g' -e 's/)//g'|awk '{print "nc -w 2 -v "$1" "$2"|grep succ"}'|sort|uniq> a.sh
输出的文件格式就会是下面的形式:
nc -w 2 -v 192.168.97.17 1521|grep succ
nc -w 2 -v 192.168.97.60 1532|grep succ
nc -w 2 -v 192.168.97.83 1522|grep succ
nc -w 2 -v 210.245.20.28 1521|grep succ
nc -w 2 -v bak.test.com 1521|grep succ
直接运行生成的脚本即可。在一些耦合性高的环境中,这种方式就非常有效了,那些成功,哪些失败,一目了然。我们也可以只分析哪些失败的。
Connection to 10.11.133.15 1523 port [tcp/cichild-lm] succeeded!
Connection to 10.11.133.16 1528 port [tcp/mciautoreg] succeeded!
nc: connect to 10.11.133.163 port 1521 (tcp) timed out: Operation now in progress
Connection to 10.11.65.23 1528 port [tcp/mciautoreg] succeeded!
nc: connect to 192.168.1.41 port 1523 (tcp) timed out: Operation now in progress
nc: connect to 210.245.20.28 port 1521 (tcp) failed: Network is unreachable
nc: connect to bak.test.com port 1521 (tcp) timed out: Operation now in progress
这种方式就会大大提高我们分析问题的效率。

对于tnsping的连接超时的功能补充(二)相关推荐

  1. 对于tnsping的连接超时的功能补充

    tnsping,作为Oracle连接测试的一个小巧的工具,其实大家已经不陌生了,但是使用tnsping有一个问题,就是连接超时,当然这个和网络的安全策略等密不可分,但是摆在我面前的一个问题是,现在有大 ...

  2. oracle ping 超时_对于tnsping的连接超时的功能补充

    tnsping,作为Oracle连接测试的一个小巧的工具,其实大家已经不陌生了,但是使用tnsping有一个问题,就是连接超时,当然这个和网络的安全策略等密不可分,但是摆在我面前的一个问题是,现在有大 ...

  3. 远程使用plsql登陆数据库时,界面提示 ORA-12170 TNS 连接超时

    本机正常使用,但是局域网中的其他机器出现"ORA-12170:TNS:连接超时 解决方法: 查看网络能否ping通 ping ip地址 tnsping ip地址(或者是服务器的实例名SID) ...

  4. 手机连接电脑热点 显示 连接超时,已解决

    window10版本电脑开热点,手机连接不上,一直提示超时,手机连接电脑热点显示超时,倒腾倒腾,解决了 补充:既解决问题后开热点(WiFi和以太网混合共享)连接又没用了.用另一个没开的开一下,在开回来 ...

  5. 如何解决MySQL连接超时关闭

    最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到M ...

  6. SSRS报表连接超时的问题

    这段时间遇到一个问题就是ReportService 中采用了远程连接的报表偶尔会断开连接,导致报表导出异常,查阅了很多资料,几天来就是断断续续的终于解决了这个问题,下面把一些解决的点一一展示出来,便于 ...

  7. 王者荣耀服务器响应超时,“团战”打游戏,为什么你的网络信号总是连接超时?...

    原标题:"团战"打游戏,为什么你的网络信号总是连接超时? 在给大家提供帮助之前,我们要先了解一下信号格的作用.要明确一点的是--信号格不一定代表信号强度. 如果在人多的地方使用支持 ...

  8. ffmpeg连接超时与解码超时

    ffmpeg超时时间应该有两个,连接超时时间和解码超时时间,但是现在只有一个参数,本文告诉你一种解决方案 // Set the RTSP Options     AVDictionary *opts ...

  9. MySQL连接问题【如何解决MySQL连接超时关闭】

    --MySQL连接问题[如何解决MySQL连接超时关闭] ------------------------------------------------转载 最近做网站有一个站要用到WEB网页采集器 ...

最新文章

  1. 因为应用程序的并行配置不正确 sxstrace
  2. python【力扣LeetCode算法题库】面试题 10.01-合并排序的数组
  3. golang 中的sort 包
  4. Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码--转载
  5. PHP之Session与Cookie:存放 安全 应用场景 过期设定 依赖关系
  6. chrome浏览器net::ERR_TOO_MANY_REDIRECTS
  7. 反序列化的时候出现eof exception_FastJson序列化时候出现了$ref?还不赶紧学习下...
  8. 如何下载Lucene.net源码
  9. python工资高还是java-未来Java、大数据、Python哪个前景更好,薪资更高?
  10. JDBC Java数据库编程
  11. sis forum index.php,SiS001 获取当前服务器的Ip地址
  12. input输入框提示语
  13. 华硕路由器里的虚拟服务器在哪里,华硕RT-AC86U路由器怎么设置端口转发服务
  14. Java把html转成word
  15. 如何注册自己的企业邮箱?
  16. c++面试常见题·Part 3 TCP/IP多线程编程设计模式Linux基操等
  17. 百度uedit禁止转义及关于模板语言 Mustache
  18. 如何将Dicom系列转换为一个Nifti文件(Python)
  19. Ubuntu20.04下安装显卡驱动
  20. 调音台基础使用说明-功能分布、输入输出连接、通道条使用

热门文章

  1. 置换怎么表示成轮换_§2.3 置换群
  2. rust安装教程linux,如何在 Linux 中安装 Rust 编程语言
  3. linux下搭建ntp服务,Linux 下快速搭建ntp 时间同步服务器
  4. excel sample
  5. mongoDB分页的两种方法
  6. 如何用数学和化学方法测量英国海岸线的长度
  7. Django之ORM操作
  8. PJzhang:互联网是有国界
  9. idea spring helloworld
  10. 论文中常用的几个Word2010技巧