文档章节

while和ssh连用的误区

perofu
 perofu
发布于 2014/07/12 14:41
字数 336
阅读 611
收藏 4

 

         今天听到同事,说了whilessh连用的从定向问题,然后baidu了下,特此总结。

详见:http://blog.csdn.net/shrekmu/article/details/2513177

 

         for循环中,没有此问题。

 

         原因:while循环中,使用了重定向机制,被读取文件中的信息都已经读入并重定向给了整个while语句。所以当我们在while循环中再一次调用read语句,就会读取到下一条记录。问题就出在这里,ssh语句正好读取输入的所有信息

 

         解决办法:while循环中的ssh语句的最后,加上< /dev/null,即可。

格式:

cat file|while read LINE

do

      echo ********************************$LINE

      ssh  $LINE cat </dev/null

done

 

实例1:常见的错误

 

[root@ tmp]# cat date

172.21.34.20

172.21.34.23

172.21.34.22

 

[root@ tmp]# vi while_ssh.sh

 

#!/bin/bash

while read LINE

do

      echo ********************************$LINE

      ssh  $LINE cat

done < date

 

 

[root@ tmp]# sh -x while_ssh.sh

+ read LINE

+ echo   '********************************172.21.34.20'

********************************172.21.34.20

+ ssh -p 10060 172.21.34.20 cat

172.21.34.23

172.21.34.22

+ read LINE

 

 

实例2:解决办法

 

[root@   tmp]# cat date

172.21.34.20

172.21.34.23

172.21.34.22

 

[root@   tmp]# vi while_ssh.sh

 

#!/bin/bash

while   read LINE

do

    echo   ********************************$LINE

    ssh  $LINE cat </dev/null

done   < date

 

 

[root@   tmp]# sh -x while_ssh.sh   

+   read LINE

+   echo '********************************172.21.34.20'

********************************172.21.34.20

+ ssh   -p 10060 172.21.34.20 cat

+   read LINE

+   echo '********************************172.21.34.23'

********************************172.21.34.23

+ ssh   -p 10060 172.21.34.23 cat

+   read LINE

+   echo '********************************172.21.34.22'

********************************172.21.34.22

+ ssh   -p 10060 172.21.34.22 cat

+   read LINE


© 著作权归作者所有

共有 人打赏支持
perofu
粉丝 128
博文 155
码字总数 131715
作品 0
广州
系统管理员
私信 提问
加载中

评论(1)

perofu
perofu
今天测试while+nc到ssh端口,也是出现同样的问题,make😅
关键字:国外镜像服务器,Nginx,Proxy,G姓防火墙,SSH,压缩,加密传输,专用隧道。

想了好久,这个标题应该怎样写。 就如同我想了很久这需求应该怎样配。 我所建立以摄影图片为主的论坛,有一大部分朋友远在国外。 他们在各地的校园或市镇里头上网所连接位于国内的服务器稳定...

范堡
2011/07/15
2.1K
8
join用法与for循环用法

一:join用法 字符串迭代添加元素 s='dsfhhewfe's1='*'.join(s)print(s1) 打印结果: dsfhhewfe 二:字符串循环(与for循环连用,可以添加break,continue) 1 for循环与break连用 for i in......

偷笑的骆驼
2018/01/24
0
0
SSH隧道与端口转发及内网穿透

SSH隧道与端口转发及内网穿透 大家都知道SSH是一种安全的传输协议,用在连接服务器上比较多。不过其实除了这个功能,它的隧道转发功能更是吸引人。下面是个人根据自己的需求以及在网上查找的...

fighting-cluber
2013/12/22
0
0
走出架构误区,架构师并不是想象的那么容易

几年前还记得我发表的软件设计的几大误区吗?   随着时代的发展,orm被更多人接受,九十年代出来的设计模式也被动地融入到主流框架,以至于设计模式到现在发展成了架构模式和业务模式,而存...

技术小能手
2018/06/08
0
0
通过示例学习使用 netstat

netstat 是一个告诉我们系统中所有 tcp/udp/unix socket 连接状态的命令行工具。它会列出所有已经连接或者等待连接状态的连接。 该工具在识别某个应用监听哪个端口时特别有用,我们也能用它来...

作者: Shusain
2017/12/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
5
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部