Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项
前提:给自己机器配置ssh免密登录
#!/bin/bash
cat << 'EOD' > list
1
2
3
4
EOD
while read line
do
if ssh myname@127.0.0.1 "test -f /tmp/a.sh"; then #配置了免密登录,此处不用输入密码
echo "$line file exist."
else
echo "$line file not exist."
fi
done < list
问题:按理,list文件里有4行,这个while循环应该会执行4次才对,为何这个只执行了一次呢?
答案如下:
检查ssh选项,发现
-n Redirects stdin from /dev/null (actually, prevents reading from stdin). This must be used when ssh is run in the background. A
common trick is to use this to run X11 programs on a remote
machine. For example, ssh -n shadows.cs.hut.fi emacs & will start
an emacs on shadows.cs.hut.fi, and the X11 connection will
be automatically forwarded over an encrypted channel. The ssh pro-
gram will be put in the background. (This does not work if
ssh needs to ask for a password or passphrase; see also the -f
option.)
可以说这个选项是专门用来解决这个问题的。用/dev/null来当ssh的输入,阻止ssh读取本地的标准输入内容。
#要想使本脚本执行次数正常,ssh命令需要添加-n选项即可。
https://blog.csdn.net/notsea/article/details/42028359
Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项的更多相关文章
- SSH免密远程登陆及详解
SSH(安全外壳协议):为建立在应用层和传输层基础上的安全协议,ssh是目前较为可靠,专门为远程登陆,会话和其他网络服务提供安全 协议.利用ssh协议可以有效的防止远程管理过程中的信息泄露问题,传统的 ...
- L07-Linux配置ssh免密远程登录
本文配置可实现:集群服务器之间相互可以ssh免密登录.若只想从单一机器(如master)ssh免密登录其他机器(slave1.slave2),则只跟着操作到第二步即可. 建议先花两三分钟把全文看完再跟 ...
- 利用系统自带工具快速实现SSH免密远程登录
一.软件环境 操作系统:CentOS Linux release 7.4.1708 (Core) SSH版本 [root@Geeklp201 ~]# ssh -V OpenSSH_7.4p1, Ope ...
- Linux下配置ssh免密远程登录
步骤 使用ssh-keygen生成密钥对 提示要求输入保存的位置,密码等信息.全部使用默认信息即可 使用ssh-copy-id user@host将公钥拷贝到需要免密登录的服务器的账户中. 例如,需要 ...
- shell编程中的循环语句
while循环直接从文件中读取 while read line do command done < filename until循环 until 条件 do command done for循环 ...
- shell 脚本实战笔记(8)--ssh免密码输入执行命令
前言: ssh命令, 没有指定密码的参数. 以至于在脚本中使用ssh命令的时候, 必须手动输入密码, 才能继续执行. 这样使得脚本的自动化执行变得很差, 尤其当ssh对应的机器数很多的时候, 会令人抓 ...
- python免密远程执行shell
使用paramiko库:https://github.com/paramiko/paramiko 简单封装SSH类 import paramiko class SSH: def __init__(se ...
- 【转】ssh 远程执行命令
原文:https://blog.csdn.net/liuxiao723846/article/details/82667482 SSH 是 Linux 下进行远程连接的基本工具,不光可以登录,也可以远 ...
- ssh 远程执行命令
SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进 ...
随机推荐
- ROS * 通过launch文件添加多个模型
我添加的是dae模型,urdf文件过两天贴 方法一 : <launch> <!-- these are the arguments you can pass this launch ...
- idea打开dashboard
1.编辑workspace.xml文件,搜索 “RunDashboard” 节点 2.在component节点下增加option <option name="configuration ...
- elipse使用,Java和Javaee模式区别
Java带有用户界面的基本ide,缺少数据库和web开发工具 IDE(Integrated Development Environment,集成开发环境).集成开发环境(简称IDE)软件是用于程序开发 ...
- linux 下 mac 地址如何查询
cat /sys/class/net/eth0/address
- windows7 64位系统安装CPU版本TensorFlow(anaconda3.6)
1>下载anaconda3.6,https://www.anaconda.com/download/,选择64位的anaconda3.6,安装时候,路径可以自定义,但是要选择把路径添加到环境变量 ...
- C putchar() 和 getchar()
C 库函数 int getchar(void) 从 终端输入获取一个字符 : 返回值:该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EO ...
- Idea动态java模板配置
使用全能idea工具可以可以大大的提升开发效率,其中有个特别有用技能跟大家分享一下. 相比大家都用过idea的快速插入代码功能,插入诸如getter,setter还有构造函数生成,做到了只需一键点击就 ...
- rocketmq 4.3.2 解决远程不能消费问题,解决未识别到公网IP问题
1.解决远程不能消费问题 问题描述: nameserver和broker启动后,用tools(命令如下)能发送消息和消费消息,在局域网服务器能发送消息,消费启动后收不到消息通知问题 sh tools. ...
- TCL 引用同目录下其他脚本文件--source
方法一: source [file join [file dirname [info script]] Export_inp_by_loadstep.tcl] 方法二: source [file jo ...
- 深入理解 ORM框架
1.ORM是什么? object Relational mapping 对象关系映射,是一种为了解决面向对象与关系型数据库存在不匹配现象的技术,简单说,orm通过描述对象和数据库之间映射的元数据,将程 ...