• 关于交互Shell的两个小示例


    1、需要从用户接收参数,直接看示例:

    zwang@wzc:/tmp$ cat test.sh 
    #!/bin/sh
    read -p "请输入起始日期(yyyymmdd):" d1
    read -p "请输入结束日期(yyyymmdd):" d2
    read -p "起始日期$d1 ~ 结束日期$d2,共XX条记录,是否确认删除(Y/N), 默认为N:" c
    if [ "$c" = "Y" ]; then
    echo "共删除XX条记录。"
    else
    echo "删除操作被取消!"
    fi
    zwang@wzc:/tmp$
    zwang@wzc:/tmp$
    zwang@wzc:/tmp$ sh test.sh
    请输入起始日期(yyyymmdd)20110701
    请输入结束日期(yyyymmdd)20110801
    起始日期20110701 ~ 结束日期20110801,共XX条记录,是否确认删除(Y/N), 默认为N:
    删除操作被取消!
    zwang@wzc:/tmp$
    zwang@wzc:/tmp$ sh test.sh
    请输入起始日期(yyyymmdd)20110701
    请输入结束日期(yyyymmdd)20110801
    起始日期20110701 ~ 结束日期20110801,共XX条记录,是否确认删除(Y/N), 默认为N:Y
    共删除XX条记录。

    2、自动登录操作,需要先安装expect软件包:

    sudo aptitude install expect //会自动安装依赖文件tcl8.5

    先看一个本地root用户切换示例:

    #!/usr/bin/expect
    spawn su root
    expect "密码:"
    send "yourpassword\r"
    expect eof
    exit

    注意:

    • 脚本的第一行是/usr/bin/expect,而不再是通常shell脚本所指定的/bin/sh,所以由此可以看出expect也类似于一个bash之类的shell
    • spawn是expect的内置命令,后面跟真正要执行的操作
    • expect也是一内置命令,判断前面执行命令(即"su root")的返回值中是否包含指定的字符串;如果是英文系统,该行应改成:expect "password:"
    • send也是一内置命令,即发送你的密码"yourpassword\r";测试时这里需改成你真实的密码,最后的'\r'不可少
    • 最后的部分表示执行完操作后就断开掉


    如果想在执行完root切换之后保持root窗口继续交互,需要对最后两行做如下修改:

    #!/usr/bin/expect
    spawn su root
    expect "密码:"
    send "yourpassword\r"
    interact

    这样执行后会继续保存在root窗口。

    关于expect脚本的执行:
    1. 给其添加可执行权限:

    $ chmod +x test.expect //也可以取名test.sh之类
    $ ./test.expect

    或者直接:

    $ expect test.expect

    接着再看一个远程登录的示例:

    #!/usr/bin/expect
    set timeout 60
    spawn ssh -l username 192.168.1.10 //根据你的实际远程主机用户信息进行测试
    expect "password:" //如果是中文系统,应改成:expect "密码:"
    send "yourpassword\r" //改成你真实的密码
    interact

    第二行set语句设置超时时间为60秒!

  • 相关阅读:
    HDU 1224 无环有向最长路
    HDU 1220 简单数学题
    HDU 1203 背包问题
    HDU 1176 DP
    HDU 1159 LCS最长公共子序列
    HDU 1160 排序或者通过最短路两种方法解决
    hdu 2349 最小生成树
    次小生成树的学习
    最小生成树prime算法模板
    poj 1679 判断最小生成树是否唯一
  • 原文地址:https://www.cnblogs.com/wzc0066/p/2949211.html
Copyright © 2020-2023  润新知