`

shell中使2用while循环ssh的注意事项

 
阅读更多
需要读取一个文本,次文本每一行包含一个IP在while循环中使用ssh,但ssh完第一行后就退出了,如何避免自动读取一行就跳出while循环,此文将详细解释其原因。

    最近在写一个自动更新的shell,可是发现如果在使用while循环从一个文件中读取ip地址,然后访问就只能读取第一行纪录。代码如下:
while read LINE 
do 
echo *******************************************$LINE 
ssh 192.168.10.233 ls 
done < data 


但是如果使用for就没有这个问题,非常的奇怪,for的代码如下:
for LINE in `cat data` 
do 
echo *******************************************$LINE 
ssh 192.168.10.233 ls 
done 


难道for和while竟然有这么大的差别,不可能吧。经过一番试验以后发现,原来并不是while的for的差别,而是while中使用重定向机制,data文件中的信息都已经读入并重定向给了整个while语句。所以当我们在while循环中再一次调用read语句,就会读取到下一条记录。问题就出在这里,ssh语句正好回读取输入中的所有东西,下面这个shell能很好的说明这个问题:
while read LINE 
do 
echo *******************************************$LINE 
ssh 192.168.10.233 cat 
done < data 


执行这个shell就会发现,ssh中的cat语句会打印出data文件中的其他纪录,这就导致调用玩ssh语句后,输入缓存中已经都被读完了,当read语句再读的时候当然也就读不到纪录,循环也就退出了。改进方法是,将ssh的输入重定向输入:

while read LINE 
while read LINE 
do 
echo *******************************************$LINE 
ssh 192.168.10.233 ls < /dev/null 
done < data  


这样,在while语句中也能顺利的执行ssh语句了。linux的重定向还真复杂。
分享到:
评论

相关推荐

    sshshell.zip

    在IT领域,SSHshell是Linux或Unix类系统中常用的一种命令行接口,用于远程控制和管理服务器。通过SSH,用户可以执行命令、传输文件,而不用担心数据被窃听或篡改。 首先,我们要理解SSH的工作原理。它使用公钥加密...

    ssh注意事项

    在IT领域,SSH(Secure Shell)作为一种广泛使用的网络协议,为远程登录提供了安全的环境。然而,在实际应用中,特别是当SSH与Spring框架、Hibernate等技术整合时,开发者需注意多个关键点,以确保系统的安全性、...

    SSH Secure Shell

    在实际应用中,使用SSH Secure Shell通常涉及以下步骤: 1. 安装SSH服务器:在Linux服务器上安装SSH服务,如在Debian/Ubuntu系统中使用`sudo apt-get install openssh-server`,在CentOS/RHEL系统中使用`sudo yum ...

    Shell中的while循环几种使用实例详解

    本文将详细介绍`while`循环在Shell中的几种常见使用实例。 1. **利用while循环计算1到100的和** 这个例子展示了如何用`while`循环来累加一系列数字。在第一个示例中,变量`i`从1开始,每次循环增加1,直到`i`大于...

    SSH Secure Shell Client中文乱码

    在使用SSH Secure Shell Client过程中遇到中文乱码的情况是非常令人头疼的问题。本文将深入探讨这一现象,并给出相应的解决方案。 #### 二、问题描述与分析 根据提供的描述,“SSH Secure Shell Client中文乱码”...

    SSH Secure Shell工具

    SSH Secure Shell工具是Linux环境中广泛使用的工具,它允许用户通过加密的方式与远程服务器进行交互,确保数据传输的安全性,防止中间人攻击和其他网络安全威胁。在本篇文章中,我们将深入探讨SSH的工作原理、主要...

    Bash Shell 中的while 循环、 do…while

    文章目录while 循环的语法结构 和 一些例子:1、求 10 以内每个整数的平方值:2、使用 while 循环 的嵌套来实现打印三角形:do..while 语法:    此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感...

    linux shell循环:for、while、until用法详解

    在Linux Shell编程中,循环是不可或缺的一部分,它允许我们重复执行一段代码,直到特定条件不再满足。本篇文章将深入探讨三种常见的循环结构:for、while和until。 **1. for循环** for循环常用于已知循环次数的...

    SSH Secure Shell绿色版 经典版

    总的来说,SSH Secure Shell经典版作为一款绿色版的SSH客户端工具,以其便捷性和安全性,为用户提供了高效、安全的远程访问解决方案,尤其适合IT管理员和开发者在日常工作中使用。其轻量级的特性使得用户无需繁琐的...

    shell编程—-while和until循环

      while循环是shell脚本中最简单的一种循环,当条件满足时,while重复地执行一组语句;当条件不满足时,就退出while循环。 shell while循环的用法如下: while condition do statements done   condition表示...

    Execute shell script on remote host using ssh.sh

    Jenkins构建Execute shell script on remote host using ssh命令;JenkinsSSH执行命令;

    SSH Secure Shell免安装版

    SSH Secure Shell免安装版,解压后,直接运行SshClient SSH Secure Shell免安装版,解压后,直接运行SshClient

    SSH,The Secure Shell:The Definitive Guide(2nd)

    【内容简介】 快点用SSH保护你的计算机网络吧!SSH(Secure Shell)具有透明、保密性强、公钥认证可信的特点,并具有高度可配置的客户端/服务器体系结构,是基于TCP/IP协议、目前十分流行且健壮的网络安全与隐私...

    shell脚本中的几种循环操作(附脚本)

    在Shell中,可以结合数组使用For循环,对数组中的每个元素进行操作。 ```bash array=("element1" "element2" "element3") for element in "${array[@]}"; do echo $element done ``` 6. **嵌套循环** 你还...

    shell命令while循环中使用sleep命令代码示例

    在Linux或Unix系统中,Shell脚本是一种强大的自动化工具,其中`while`循环是一个核心的控制结构,用于重复执行一段代码直到特定条件不再满足。在`while`循环中结合使用`sleep`命令,我们可以实现定时任务、延迟执行...

    SSH Secure Shell.zip

    SSH Secure Shell客户端安装包。...SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH

    Windows中SSH Secure Shell Client 的使用方法doc

    ### Windows中SSH Secure Shell Client 的使用方法 #### 一、概述 本文档旨在详细介绍如何在Windows环境下使用SSH Secure Shell Client进行安全的远程访问与文件传输。通过本教程,您将学习到从软件的下载安装、...

    Shell中的for和while循环详细总结

    while循环注意为方括号[],且注意空格** 在使用while循环时,条件判断通常使用方括号`[]`,并且条件两边需要有空格: ```bash min=1 max=100 while [ $min -le $max ] do echo $min min=$((min + 1)) done ``` ...

    SSH Secure Shell.rar

    SSH Secure Shell是一款图形化的SSH客户端,它为非命令行用户提供了友好的界面,支持SSH1和SSH2协议,具有会话管理、文件传输、多窗口同时连接等功能。对于那些习惯于图形化操作的用户来说,这是一个非常实用的工具...

Global site tag (gtag.js) - Google Analytics