bash 中 while读取文件并通过 ssh执行命令出现的问题及解决方法
2012-02-16 14:37
876 查看
最近在做一些集群管理的简单脚本,其中有一部分是将文件中的机器名读取,并将应用通过scp传输,通过ssh解压部署。
#! /bin/bash
while read IP
do
scp adfs-*.tar.gz $IP:~
ssh $IP tar -zxf adfs-*.tar.gz
done<machine
一开始写了个简单的脚本,通过machine读取所有机器名,在进行操作。
可是运行以后发现,只有第一次循环成功运行,剩下的都没有运行。
google了一下,是由于bash中while循环调用ssh后会使用subshell,导致后续操作无法进行。
解决方法为在ssh上加参数-n,即可成功运行。
#! /bin/bash
while read IP
do
scp adfs-*.tar.gz $IP:~
ssh -n $IP tar -zxf adfs-*.tar.gz
done<machine
#! /bin/bash
while read IP
do
scp adfs-*.tar.gz $IP:~
ssh $IP tar -zxf adfs-*.tar.gz
done<machine
一开始写了个简单的脚本,通过machine读取所有机器名,在进行操作。
可是运行以后发现,只有第一次循环成功运行,剩下的都没有运行。
google了一下,是由于bash中while循环调用ssh后会使用subshell,导致后续操作无法进行。
解决方法为在ssh上加参数-n,即可成功运行。
#! /bin/bash
while read IP
do
scp adfs-*.tar.gz $IP:~
ssh -n $IP tar -zxf adfs-*.tar.gz
done<machine
相关文章推荐
- 通过SSH向安装在虚拟机上的centOS 上传文件出现的问题及解决方法
- Centos7 Minni 安装 执行ifconfig命令出现 -bash ifconfig command not found 的解决方法
- jenkins执行xctool命令出现command not found问题解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 执行文件下载Java 调用 FFMPEG 命令时用 url 作为输入源,Linux 下出现 “no such file or directory” 问题的解决
- 使用ssh或者远程执行命令是的一些问题解决方法
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法
- 安卓(JAVA)读取Mp3文件中的歌曲信息(及readLine()出现乱码问题的解决方法)
- C#执行批处理,当批处理不在程序根目录时,出现“找不到文件”的问题的解决方法
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- jenkins执行xctool命令出现command not found问题解决方法
- 关于各种文件用Editplus的方式打开出现“向程序发送命令时出现问题”的解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法(转)
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法