zoukankan      html  css  js  c++  java
  • shell远程执行命令

    ssh主要参数说明

    -l 指定登入用户

    -p 设置端口号

    -f 后台运行,并推荐加上 -n 参数

    -n 将标准输入重定向到 /dev/null,防止读取标准输入

    -N 不执行远程命令,只做端口转发

    -q 安静模式,忽略一切对话和错误提示

    -T 禁用伪终端配置

    #!/bin/sh
    
    HOST_LIST="host1 host2 host3 host4"
    SSH_PORT=2202
    
    for loop in $HOST_LIST
    do
            echo "executing in $loop:"
            ssh -p $SSH_PORT $loop "$1"
    #ssh -f   -p $SSH_PORT $loop  "$1" & 
    echo done

    调用 tar zxvf /root/pat.tar.gz -C /home

    在本地调用远程脚本

    $ ssh -l oracle r7  '/tmp/b.sh &'

    注意以下几点:

    &表示后台执行,也可以不加;

    脚本要拥有执行权限;

    如果远程脚本 b.sh 中使用了文件,文件必须要写全路径,不然的话,默认为指定用户的home目录,而非当前目录。

    使用管道模拟并发

    #!/usr/bin/ksh
    # SCRIPT: ptest.sh
    # AUTHOR: Ray001
    # DATE: 2008/10/03
    # REV: 2.0
    # For STUDY
    #
    # PURPOSE:
    # 实现进程并发,提高执行效率,同时能记录每个执行失败的子进程信息
    
    
    #定义并发进程数量
    PARALLEL=3 
    #定义临时管道文件名
    TMPFILE=$.fifo
    #定义导出配置文件全路径名
    CMD_CFG=$HOME/cfg/ptest.cfg
    #定义失败标识文件
    FAILURE_FLAG=failure.log
    
    
    ####################### 函数定义 ########################
    # 中断时kill子进程
    function trap_exit
    {
    kill -9 0
    }
    
    
    # 通用执行函数
    exec_cmd()
    {
        # 此处为实际需要执行的命令,本例中用sleep做示例
            sleep ${1}
        if [ $? -ne 0 ]
        then
            echo "命令执行失败"
            return 1
        fi
    }
    
    
    trap 'trap_exit; exit 2' 1 2 3 15
    
    #清理失败标识文件
    rm -f  ${FAILURE_FLAG}
    
    #为并发进程创建相应个数的占位
    mkfifo $TMPFILE 
    exec 4<>$TMPFILE 
    rm -f $TMPFILE 
    { 
            count=$PARALLEL
            while [ $count -gt 0 ]
            do 
                    echo
                    let count=$count-1
            done 
    } >&4
     
    #从任务列表 seq 中按次序获取每一个任务 
    while read SEC 
    do 
            read <&4
             (  exec_cmd ${SEC} || echo ${SEC}>>${FAILURE_FLAG} ; echo >&4 ) &
    done<$CMD_CFG
    wait 
    exec 4>&- 
    
    #并发进程结束后判断是否全部成功
    if [ -f ${FAILURE_FLAG} ]
    then
            exit 1
    else
            exit 0
    fi
  • 相关阅读:
    MyEclipse错误积累--持续更新
    Git错误积累-持续更新
    MySQL错误积累-持续更新
    评价一个人,就是要看他把时间都花在哪了
    收集的yum命令博文
    Github 常用命令
    python库收藏
    [转载]Scikit Learn: 在python中机器学习
    Windows下python安装Matplotlib、Numpy和Scipy模块
    [LeetCode] #45 Jump Game II
  • 原文地址:https://www.cnblogs.com/perfei/p/5377159.html
Copyright © 2011-2022 走看看