zoukankan      html  css  js  c++  java
  • awk引用外部变量及调用系统命令方法

    目标:想用awk与scp命令批量传送文件

    前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html)

    实现脚本方法:

    1.在一个文件中记录好各个主机的端口与ip地址,第一列为主机描述信息,参考信息

    [root@zejin240 share]# cat scp_port_ip.txt 
    host1 33330 192.168.10.11
    host2 33331 192.168.20.22
    host3 33332 192.168.30.33
    host4 33333 192.168.40.44

    2.编写shell脚本

    [root@zejin240 share]# cat scp_all.sh 
    #!/bin/bash
    src_path='/home/chenzejin/mysql_backup_all.sh'
    des_path='/home/chenzejin/mysql_backup_all_from11.sh'
    awk '{ cmd="scp -P"$2 "'" $src_path"'"  " chenzejin@"$3":""'"$des_path"'";print cmd  }   ' /mnt/hgfs/share/scp_port_ip.txt
    

    说明:最后一行用awk去调用主机ip与端口的信息,并拼接成一个完事的scp命令,这个脚本中只是打印拼接命令,确定拼接命令正确用,将print cmd改成system(cmd)即可完成真正命令的执行

    调试信息如下:

    [root@zejin240 share]# sh -x scp_all.sh 
    + src_path=/home/chenzejin/mysql_backup_all.sh
    + des_path=/home/chenzejin/mysql_backup_all_from11.sh
    + awk '{ cmd="scp -P"$2 " /home/chenzejin/mysql_backup_all.sh"  " chenzejin@"$3":""/home/chenzejin/mysql_backup_all_from11.sh";print cmd  }   ' /mnt/hgfs/share/scp_port_ip.txt
    scp -P33330 /home/chenzejin/mysql_backup_all.sh chenzejin@192.168.10.11:/home/chenzejin/mysql_backup_all_from11.sh
    scp -P33331 /home/chenzejin/mysql_backup_all.sh chenzejin@192.168.20.22:/home/chenzejin/mysql_backup_all_from11.sh
    scp -P33332 /home/chenzejin/mysql_backup_all.sh chenzejin@192.168.30.33:/home/chenzejin/mysql_backup_all_from11.sh
    scp -P33333 /home/chenzejin/mysql_backup_all.sh chenzejin@192.168.40.44:/home/chenzejin/mysql_backup_all_from11.sh

    说明:在使用awk命令引用外部变量时,需要注意:外部变量名需要用"'"$src_path"'"这样的格式来引用,而awk中的域信息$0 $1 $2……等不用任何引号包含。

    为什么需要用"'"$src_path"'"这样的格式来引用外部变量呢,其实shell在解析时是从左到匹配单引号与双引号的,会一步步解释过去,具体的可以参考其它的文章:http://www.cnblogs.com/mydomain/archive/2012/09/24/2699467.html

    至此,完成了我们的设定目标。

  • 相关阅读:
    深入Java类加载全流程,值得你收藏
    如何用好Go的测试黑科技
    Go的内存对齐和指针运算详解和实践
    Go和Java的性能对比,真的如此吗?
    Go中锁的那些姿势,估计你不知道
    浅谈Go类型转换之间的那些事
    学堂在线课程字幕下载
    无序数组中求最大值和最小值的最少比较次数
    串口字符串-HEX格式
    个人程序命名规范
  • 原文地址:https://www.cnblogs.com/zejin2008/p/5144647.html
Copyright © 2011-2022 走看看