当前位置: 首页 > 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.mmbaike.com/news/32378.html

相关文章:

  • 广州做网站服务论坛发帖
  • 营销型网站建站系统东莞网站建设最牛
  • 茂名网站建设公司网站打开速度优化
  • 网站开发公司不干了收录网站是什么意思
  • 怎么优化一个网站上海网站设计
  • 玉林做绿化苗木网站的是哪个单位搜索引擎大全全搜网
  • 工作一般做网站视频的工作叫做什么包括哪些内容
  • 厦门网站制作全程服务网络营销策划方案ppt
  • 山东病毒感染最新小江seo
  • 网站开发的心得体会襄阳网站推广优化技巧
  • 什么类型的公司需要做建设网站的兰州怎么提高网站的排名
  • 建设银行的投诉网站首页线上推广员是做什么的
  • 代做网站 作业关键词分析工具网站
  • 清河网站建设百度大数据平台
  • 网站外包建设自己如何优化网站排名
  • dw做网站首页长宽设置多少深圳百度公司地址在哪里
  • 域名停靠网站免费进入百度搜索首页
  • 个人网站做哪一种比较赚钱太原做网站的
  • 东莞做个网站今日国内新闻大事20条
  • 字体设计学习网站营销软文写作
  • 网站建设项目详情真正免费的建站
  • 什么做网站的公司好网络营销的特征和功能
  • 外贸网站dns关键词优化是怎么弄的
  • 站酷设计网站官网入口插画设计seo网络推广培训班
  • 网站没有根目录微信引流的十个方法
  • wordpress dux主题不能用深圳外贸seo
  • 网站打开慢什么原因呢怎样查询百度收录和排名情况
  • 3有免费建网站seo课程培训课程
  • 别人做的网站不能用windows优化大师可靠吗
  • wordpress 竖导航栏seo推广哪家公司好