shell多机器分发文件以及执行命令
来源:互联网 发布:windows pe如何分区 编辑:程序博客网 时间:2024/05/01 12:00
网上看到的,很实用的工具。
首先需要设置好机器之间的ssh无密码通讯。
有三个文件,分别是
1.deploy.conf
2.deploy.sh
3.runRemoteCmd.sh
注意:
这三个文件都放在/home/hadoop/tools目录下;
deploy.conf配置文件的第一列是服务器的host名字,后面是对它的标识;
其中deploy.conf是配置文件:
#### NOTES# There is crontab job using this config file which would compact log files and remove old log file.# please be carefully while modifying this file until you know what crontab exactly do#hdpcdhnode1,all,master,zk,cdhnode2,all,slave,zk,cdhnode3,all,slave,zk,jn,kfk,cdhnode4,all,slave,jn,kfk,cdhnode5,all,slave,jn,kfk,
deploy.sh是多机器分发脚本:
#!/bin/bash#set -xif [ $# -lt 3 ]then echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag" echo "Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile" exitfisrc=$1dest=$2tag=$3if [ 'a'$4'a' == 'aa' ]then confFile=/home/hadoop/tools/deploy.confelse confFile=$4fiif [ -f $confFile ]then if [ -f $src ] then for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` do scp $src $server":"${dest} done elif [ -d $src ] then for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` do scp -r $src $server":"${dest} done else echo "Error: No source file exist" fielse echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"fi
runRemoteCmd.sh是多机器执行命令脚本:
#!/bin/bash#set -xif [ $# -lt 2 ]then echo "Usage: ./runRemoteCmd.sh Command MachineTag" echo "Usage: ./runRemoteCmd.sh Command MachineTag confFile" exitficmd=$1tag=$2if [ 'a'$3'a' == 'aa' ]then confFile=/home/hadoop/tools/deploy.confelse confFile=$3fiif [ -f $confFile ]then for server in `cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'` do echo "*******************$server***************************" ssh $server "source ~/.bash_profile; $cmd" doneelse echo "Error: Please assign config file or run deploy.sh command with deploy.conf in same directory"fi
使用方法:
##分发hadoop包到标识为slave服务器的/home/hadoop/app/目录下:deploy.sh hadoop /home/hadoop/app/ slave##让标识为zk的所有服务器执行/home/hadoop/app/zookeeper/bin/zkServer.sh start命令runRemoteCmd.sh "/home/hadoop/app/zookeeper/bin/zkServer.sh start" zk
0 0
- shell多机器分发文件以及执行命令
- shell循环登陆多台机器进行命令执行
- 通过expect scp 命令分发文件到其它机器
- Shell执行命令并把结果写入文件
- shell脚本使用ssh命令连接主机,自动创建目录,分发程序,执行命令
- shell脚本ssh到其它机器上执行命令
- ssh登录其他机器并执行shell命令
- linux 通过shell脚本在本地执行远程机器命令
- ssh远程到目标机器执行命令shell脚本
- shell 执行多条命令
- shell执行多个命令
- Shell (一)新建文件,并用Shell命令执行
- vim-6 执行shell命令、文件另存为、合并文件和打开多个文件
- shell基础-输入输出以及重定向/多命令顺序执行与管道符/通配符与特殊符号
- 多台机器批量执行命令
- 通过winscp实现一键修改多台机器文件,并执行相应命令的脚本
- Linux 小工具---多台机器执行命令或复制文件
- linux 多个shell命令一起执行
- 2016 review
- 欢迎使用CSDN-markdown编辑器
- 高性能网站架构之负载均衡 Nginx的安装
- Oracle数据库安装及配置
- js 让另一个方法失效
- shell多机器分发文件以及执行命令
- Debian下安装Mosquitto
- 最大似然参数估计
- 数字进度条NumberProgressBar
- 【web】对比时间大小的工具函数
- 图像边缘检测--OpenCV之cvCanny函数
- Linux YUM下载指定rpm包
- 1057. 数零壹(20) PAT 乙级
- unlocked_ioctl和compat_ioctl