zoukankan      html  css  js  c++  java
  • expect -- 在脚本实现交互式输入

    在一些情况下需要在命令行交互式输入一些命令,像ssh root@xxx 或 git clone xxx

    [root@one ~]# git clone http://gitlab.test.net/Yogur/for_test.git                                
    Cloning into 'for_test'...
    Username for 'http://gitlab.test.net': 
    Password for 'http://gitlab.test.net': 
    fatal: Authentication failed for 'http://gitlab.test.net/Yogur/for_test.git/'
    

    如何在脚本实现git clone 并输入用户名密码呢

    安装expect

    yum -y install expect
    

    脚本

    cat test.sh
    #!/bin/bash
    expect -c "
    spawn $1   #$1为要执行的命令
    expect {
    "*Username*:" {send $2
    ; exp_continue}  #当匹配到Username时输入$2 回车
    "*Password*:" {send $3
    }                #当匹配到Password时输入$2 回车
    }
    expect eof
    "
    

    执行脚本效果

    [root@one Yogur]# bash test "git clone http://gitlab.test.net/Yogur/for_test.git"  Yogur Yogur@333!
    spawn git clone http://gitlab.test.net/Yogur/for_test.git
    Cloning into 'for_test'...
    Username for 'http://gitlab.test.net': Yogur
    Password for 'http://Yogur@gitlab.test.net': 
    remote: Enumerating objects: 33, done.
    remote: Counting objects: 100% (33/33), done.
    remote: Compressing objects: 100% (14/14), done.
    remote: Total 33 (delta 9), reused 33 (delta 9), pack-reused 0
    Unpacking objects: 100% (33/33), done.
  • 相关阅读:
    pycharm 社区版运行flask app相关配置
    飞冰框架学习记录
    从上一次到现在总结2
    从上一次到今天的总结1
    mybatis 遇到空串无法判断
    Shell 脚本入门
    数据库批量插入数据
    Navicat for mysql 实现数据库自动备份
    自定义校验注解
    C++ 提高编程
  • 原文地址:https://www.cnblogs.com/huandada/p/12845303.html
Copyright © 2011-2022 走看看