当前位置: 首页 > news >正文

linux 使用ssh到远端并且使用while的坑

  如果要使用ssh批量登录到其它系统上操作时,我们会采用循环的方式去处理,那么这里存在一个巨大坑,你必须要小心了。

  现在是想用一个脚本获取远程服务器端/root下面的文件:

1 #!/bin/bash
2 
3 cat 'ip.txt'|while read line;do
4         echo $line
5         access=`ssh  $line "ls /root/ " `  
6 done

   结果: 脚本只对第一个IP做了检测,就直接跳循环。  

问题分析:

   while使用重定向机制,ip.txt文件中的信息都已经读入并重定向给了整个while语句,所以当我们在while循环中再一次调用read语句,就会读取到下一条记录。问题就出在这里,ssh语句正好回读取输入中的所有东西。为了禁止ssh读所有东西增加一个< /dev/null,将ssh 的输入重定向输入。

解决策略:

  1、使用for循环代表while,因为for没有一次把文件内容缓存获取过来,代码段修改如下:

1 for ip in `cat ip.txt`; do
2         echo $ip
3         access=`ssh $ip   "ls /root/ " `
4         echo $access
5 done

 

  2、若坚持使用while循环,那么需要对ssh增加-n参数,为什么增加了-n参数也可以解决问题呢?通过man ssh查看-n参数的说明

    Redirects stdin from /dev/null (actually, prevents reading from stdin)

1 #!/bin/bash
2 
3 cat 'ip.txt'|while read line;do
4         echo $line
5         access=`ssh -n $line "ls /root/ " ` 
6 done

 

相关文章:

  • [置顶] 开源史上最成功的8个开源产品
  • 广州大学华软软件学院——NA视频下载
  • Android Studio使用来自控制台的模拟器,/dev/kvm device:
  • 安装win系统报错
  • CentOS6.10下安装mysql-5.7.24
  • php 数组元素 频率 次数
  • python docx文档转html页面
  • 算法60---石子游戏【动态规划】
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • Swift 设置navigation左右两侧按钮
  • JavaEE异常
  • jQuery根据元素值删除数组元素的方法
  • 简单的原生ajax
  • restful命名
  • android Lifecycle源码分析--源码阅读100天(1)
  • 「面试题」如何实现一个圣杯布局?
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • echarts的各种常用效果展示
  • httpie使用详解
  • iOS编译提示和导航提示
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PHP的类修饰符与访问修饰符
  • 代理模式
  • 浮现式设计
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 思考 CSS 架构
  • 携程小程序初体验
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​如何防止网络攻击?
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (5)STL算法之复制
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (pojstep1.3.1)1017(构造法模拟)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)ssm码农论坛 毕业设计 231126
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十六)Flask之蓝图
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • ./configure,make,make install的作用
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .Net 应用中使用dot trace进行性能诊断
  • .NET大文件上传知识整理
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [20150707]外部表与rowid.txt
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [Assignment] C++1