当前位置: 首页 > news >正文

网站制作与建设三亚网站建设方案

网站制作与建设,三亚网站建设方案,专门做试题的网站,淘宝网站怎样建expect 是什么 expect - programmed dialogue with interactive programs(与互动程序进行程序对话) 定义脚本执行的 shell #!/usr/bin/expect -f 定义的是执行 expect 可执行文件的链接路径(或真实路径),功能类似于bas…

expect 是什么
expect - programmed dialogue with interactive programs(与互动程序进行程序对话)

  • 定义脚本执行的 shell
    #!/usr/bin/expect -f
    定义的是执行 expect 可执行文件的链接路径(或真实路径),功能类似于bash等shell功能。

  • set timeout 10
    设置超时时间,单位是秒,如果设为 timeout -1,表示永远不超时。

  • spawn
    spawn 进入 expect 环境后才能执行内部命令,不能直接在默认的 shell 环境种进行执行
    主要功能:传递交互指令

  • expect
    主要:判断输出结果是否包含某项字符串,如果没有设置超时时间,则立即返回,如果设置了超时时间,则等待一段时间后返回。

  • send
    执行交互动作,就是想要执行的命令。
    命令字符串结尾要加上“\r”,如果出现异常等待的状态可以进行核查。

  • interact
    执行完后保持交互状态,把控制权交给控制台,如果不添加这一项,交互命令会自动推出。

  • exp_continue
    The command exp_continue allows expect itself to continue executing rather than returning as it normally would. By default exp_continue resets the timeout timer. The -continue_timer flag prevents timer from being restarted. (See expect for more information.)
    命令exp_continue允许expect 重复执行,而不是直接返回。默认情况下,exp_continue重置超时计时器。-continue_timer 标志阻止计时器重新启动。

  • $argv
    expect 脚本可以接受从bash传递过来的参数,可以使用 [lindex $argv n]获得,n从0开始,分别表示第1个到第n个参数。

  • eof
    The pattern eof introduces an action that is executed upon end-of-file. A separate eof pattern may also follow the output flag in which case it is matched if an eof is detected while writing output. The default eof action is “return”, so that interact simply returns upon any EOF.

希望实现场景:

  • ssh 到目标主机后检查目标文件夹是否存在,如果存在先删除后创建,如果不存在则创建。
  • 退出ssh交互界面,使用scp将本地zip文件上传到目标主机。
  • ssh 到目标主机后解压zip文件到指定目录。
# 首次连接目标主机需要输入yes
root@curtis-Aspire-E5-471G:/home/curtis/write_code# ssh 192.168.0.101
The authenticity of host '192.168.0.101 (192.168.0.101)' can't be established.
ECDSA key fingerprint is SHA256:gsW8+dL+II4nP2kSburZz0NKi6yR4A3SnrEJVFsA+w0.
Are you sure you want to continue connecting (yes/no/[fingerprint])?# 需要输入密码的提示
root@curtis-Aspire-E5-471G:/home/curtis/write_code# ./func.exp rlk 192.168.0.101 123
spawn ssh rlk@192.168.0.101
rlk@192.168.0.101's password:

按照下下边这种写法会发现,ssh成功之后会马上退出,退出的原因是send命令之后没有expect,命令将不会被执行。

#!/usr/bin/expect -fset host_name [lindex $argv 0]
set ip_addr [lindex $argv 1]
set pwd [lindex $argv 2]spawn ssh $host_name@$ip_addr
expect {"*yes/no*" { send "yes\r"; exp_continue }"*password:" { send "$pwd\r" }
}
root@curtis-Aspire-E5-471G:/home/curtis/write_code# ./func.exp rlk 192.168.0.101 123
spawn ssh rlk@192.168.0.101
rlk@192.168.0.101's password: root@curtis-Aspire-E5-471G:/home/curtis/write_code#

如果期望ssh后进行命令行交互,可以在末尾添加interact

这里我希望ssh上去之后判断某个文件夹是否存在,如果存在先删除,然后在创建,如果不存在则直接创建。
如何判断文件夹是否存在

root@curtis-Aspire-E5-471G:/home/curtis/write_code# file shell
shell: directory
root@curtis-Aspire-E5-471G:/home/curtis/write_code# file kkkk
kkkk: cannot open `kkkk' (No such file or directory)

注意事项:如果仅仅有send命令,远端将不执行send对应的命令!!立即退出shell交互界面
如以下例子,仅存在send没有,expect:

#!/usr/bin/expect -fset host_name [lindex $argv 0]
set ip_addr [lindex $argv 1]
set pwd [lindex $argv 2]
set check_dir [lindex $argv 3]
set send_dir [lindex $argv 4]spawn ssh $host_name@$ip_addr
expect {"*yes/no*" { send "yes\r"; exp_continue }"*password:" { send "$pwd\r" }
}
set timeout 3
expect "*rlk@rlk*"send "file $check_dir\r"

结果如下所示:

root@curtis-Aspire-E5-471G:/home/curtis/write_code# ./func.exp rlk 192.168.0.101 123 /home/rlk/curtis /home/curtis/write_code/Tutorials-master.zip
spawn ssh rlk@192.168.0.101
rlk@192.168.0.101's password:
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-26-generic x86_64)* Documentation:  https://help.ubuntu.com* Management:     https://landscape.canonical.com* Support:        https://ubuntu.com/advantage* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8sjust raised the bar for easy, resilient and secure K8s cluster deployment.https://ubuntu.com/engage/secure-kubernetes-at-the-edge616 updates can be installed immediately.
332 of these updates are security updates.
To see these additional updates run: apt list --upgradableThe list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settingsYour Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Fri Mar 17 23:00:46 2023 from 192.168.0.105
# ssh成功之后立即退出
rlk@rlk:~$ root@curtis-Aspire-E5-471G:/home/curtis/write_code#

最终实现

#!/usr/bin/expect -fset host_name [lindex $argv 0]
set ip_addr [lindex $argv 1]
set pwd [lindex $argv 2]
set check_dir [lindex $argv 3]
set send_dir [lindex $argv 4]spawn ssh $host_name@$ip_addr
expect {"*yes/no*" { send "yes\r"; exp_continue }"*password:" { send "$pwd\r" }
}
set timeout 3
expect "*rlk@rlk*"send "file $check_dir\r"
expect {"*: directory*" { send "rm -rf $check_dir && mkdir -p $check_dir\r" }"*(No such file or directory)*" { send "mkdir -p $check_dir\r" }
}
# 需要根据删除文件夹大小来调整超时时间
# 所谓超时时间就是等待expect期望结果的时间,如果时间到了,还没有达到预期,就只能退出
set timeout 10
expect "*rlk@rlk*"
send "exit\r"
expect eofspawn scp $send_dir $host_name@$ip_addr:$check_dir
expect {"*yes/no*" { send "yes\r"; exp_continue }"*password:" { send "$pwd\r" }
}
# 需要根据文件大小合理设置超时时间
set timeout 10
expect eofspawn ssh $host_name@$ip_addr
expect {"*yes/no*" { send "yes\r"; exp_continue }"*password:" { send "$pwd\r" }
}
set timeout 3
expect "*rlk@rlk*"send "unzip $check_dir/Tutorials-master.zip -d $check_dir/\r"
set timeout 10
expect "*rlk@rlk*"
send "exit\r"
http://www.yayakq.cn/news/806490/

相关文章:

  • 深圳有哪些网站开发公司cms wordpress 企业
  • 民制作网站哪家便宜建设官方网站怎么登录
  • 东营城镇建设规划网站网站建设公司广告
  • 无网站网络营销WordPress模仿教程
  • wordpress网站标题自定义郑州网站
  • 用dw做的企业网站公司网站未备案
  • 网站建设实训记录iis怎么给网站设置权限
  • 网站常用颜色设计官网页面需要多少钱
  • 学做网站要学什么语言wordpress pjax
  • 南通做百度网站的公司企业cms
  • 网站建设的评价wordpress检测不到更新
  • 做视频点播网站WordPress食谱小程序
  • 网站建设的要素ui设计做兼职的网站
  • 手机网站建设设计6中国住房和城乡建设网网站
  • 站长必备网站网站设计网页首页介绍
  • 网站建设dream云南省建设厅官方网站证书
  • 新手入门网站建设网络平台创建需要多少钱
  • 制作商城网站开发哈尔滨网站建设平台
  • 广东河源网站建设家教网站开发
  • 好的网站具备什么条件如何注册电商网店
  • 微商建立网站五年级信息做网站的软件
  • 网站建设业务员主动话术wordpress也没修改
  • 犀牛云做网站编辑上传谷歌seo怎么提高网站权重
  • 昆明网站建设_云南网站建设域名备案 没有网站
  • 网易 自助网站建设十条网站建设的seo策略
  • 网站开发运营成本wordpress注册增加性别选项
  • 绵阳网站建设怎么做加盟装修公司哪家不要加盟费
  • 外贸网站多语言邢台网站建设网络公司
  • 欧 美 做 爱 视频网站怎样做网站卖自己的产品教程
  • 开发网站的基本过程物流官方网站