zoukankan      html  css  js  c++  java
  • 利用sshpass解决ssh与scp交互密码验证,tee -a 写日志与终端

    众人所知,利用ssh与scp连接远程linux主机与传输文件的时候需要交互式的输入密码,有时候我们写脚本的时候,需要自动的输入密码,ssh可以利用密钥方式免输入密码。今天我所讲的是利用sshpass(google一下下载)进行非交互式输入密码。据说也可以利用except,具体的用法你可以google一下,我今天只讲sshpass的用法。
    #!/bin/sh
    #在打包目录自动对设备进行升级
     
    PASSWORD=admin@rizhi
    USERNAME=root
     
     
    FILENAME=log.txt
    IP="200.200.103.1,200.200.103.3,200.200.103.7,200.200.103.9"
     
    LOG_NAME=auto_update_log.txt
     
    #打印错误代码并退出
    die()
    {
    ecode=$1;
    shift; 
    echo "$*, exit $ecode$" | tee -a $LOG_NAME;
    exit $ecode;
    }
    #[ $#  -lt 2 ] && usage
     
    update_device()
    {
    iparr=`echo $IP | sed 's/,/ /g'`
    echo "IP = [$iparr]" | tee -a $LOG_NAME
    for iptem in $iparr
    do
    iptem=`echo $iptem | sed 's/ //g'`
     
    echo "auto_update device ${iptem} ${CGREEN}step 1:upload ${FILENAME}...${C0}" | tee -a $LOG_NAME
    sshpass -p ${PASSWORD} scp -P 222 vtp.pkg ${USERNAME}@${iptem}:/sf/ | tee -a $LOG_NAME
    if [ $? -ne 0 ]; then
    echo "${CRED}auto_update device ${iptem} step 1:upload ${FILENAME} FAILED!${C0}" | tee -a $LOG_NAME
    continue
    fi
     
    echo "auto_update device ${iptem} ${CGREEN}step 2: update from pkg...${C0}" | tee -a $LOG_NAME
    sshpass -p ${PASSWORD} ssh -p 222 ${USERNAME}@${iptem} "cd /sf;chmod u+x vtp.pkg;if [ $? -eq 0 ];then reboot;else echo update fail;fi" | tee -a $LOG_NAME
    if [ $? -ne 0 ]; then
    echo "${CREAD}auto_update device ${iptem} step 2:update from pkg FAILED!${C0}" | tee -a $LOG_NAME
    continue
    fi
    done
    }
     
    main()
    {
    update_device
    rm -f vtp.pkg
    }
     
    main $*
    exit 0
    由以上代码:红色标记的则为重点使用sshpass传入密码给scp和ssh,并进行操作。
    我在代码中利用tee -a $LOG_NAME,这是把打印的信息既可以打印大终端(屏幕)有可以写入$LOG_NAME 中。在使用sshpass之前你要安装它才行。
  • 相关阅读:
    Laravel 学习笔记:Command
    laravel command
    git和并分支
    mysql按日期分组统计的查询
    用GitLab的Merge Request做代码评审
    Git创建合并和删除分支
    生成器和生成器表达式
    闭包,迭代器
    Mysql 初始数据库
    初识函数
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3253781.html
Copyright © 2011-2022 走看看