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

建站系统主要包括什么东莞品牌设计公司

建站系统主要包括什么,东莞品牌设计公司,其中包括,在招聘网站做销售怎么样目录 ❀expect命令运用于bash❀ expect使用原理 expet使用场景 常用的expect命令选项 Expect脚本的结尾 常用的expect命令选参数 Expect执行方式 单一分支语法 多分支模式语法第一种 多分支模式语法第二种 在shell 中嵌套expect Shell Here Document#xff08;内…目录 ❀expect命令运用于bash❀ expect使用原理 expet使用场景 常用的expect命令选项 Expect脚本的结尾 常用的expect命令选参数 Expect执行方式 单一分支语法 多分支模式语法第一种 多分支模式语法第二种 在shell 中嵌套expect Shell Here Document内嵌文档/嵌入文档  Here Document 的基本用法 expect变量如何定义和调用 函数传参数给expect应该如何实现 用法说明 观点 利 弊 ❀expect命令运用于bash❀ 功能说明expect是一款自动化的脚本解释型的工具。 (ps.expect基于tcl脚本expect脚本的运行需要tcl的支持。expect对一些需要交互输入的命令很有帮助,比如ssh ftp scp telnet。远程登录linux服务器的时候ssh命令需要手工输入密码当登录多台机器的时候就会非常繁琐。expect就可以根据设定的规则自动帮我们输入密码大大节省了时间。在shell脚本中使用expect命令可以实现自动化交互式操作例如自动登录远程服务器、自动执行命令等。)  expect使用原理 spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出。 expet使用场景 ①并根据预定标准回答其问题回答“是”、“否”或将控制权交还给您 ②远程连接设备并执行自动化操作 ③主要是一些需要人机交互的地方如果提前知道应该输入什么指令都可以使用expect 工具 常用的expect命令选项 spawn启动一个新的进程并将其与当前进程进行交互。 expect等待特定的字符串或正则表达式出现并执行相应的操作。 send向进程发送字符串并将该参数发送到进程这个过程类似模拟人类输入密码。 interact允许用户与进程进行交互interact命令可以在适当的时候进行任务的干预比如下载完ftp文件时仍然可以停留在ftp命令行状态以便手动的执行后续命令。 exp_continue允许expect继续向下执行指令在expect中多次匹配就需要用到。 exit退出expect脚本。 eofexpect执行结束退出。 set设置变量。 puts输出变量。 Timeout指定超时时间set timeout n过期则继续执行后续指令 设置超时时间,表示该脚本代码需在n秒钟内完成如果超过则退出。timeout -1为永不超时用来防止ssh远程主机网络不可达时卡住及在远程主机执行命令宕住。默认情况下timeout是10秒。 send_user 回显命令相当于echo。 $argv参数数组Expect脚本可以接受从bash传递的参数可以使用[lindex $argc n]获得n从0开始分别表示第一个第二个第三个…参数。 arg参数 vvalue。 Expect脚本的结尾 expect脚本必须以interact或expect eof结束执行自动化任务通常expect eof就够了 expect eof是在等待结束标志。由spawn启动的命令在结束时会产生一个eof标记expect eof就是在等待这个标记。 常用的expect命令选参数 -c命令行执行expect脚本 -i交互地执行expect脚本。使用“-i”选项可以通过来自于标准输入的读命令来交互地执行expect脚本。 -ddebug模式可以在运行时输出一些诊断信息输出调试信息 。 示例expect -d ssh.exp -D启用交换调式器,可设一整数参数 -f 从文件读取命令仅用于使用#!时。如果文件名为-则从stdin读取(使用./-从文件名为-的文件读取) -v 显示expect版本信息 -b不解释命令行参数 Expect执行方式 单一分支语法 expect password: {send mypassword\r} 多分支模式语法第一种 expect aaa {send AAA\r} expect bbb {send BBB\r} expect ccc {send CCC\r} ps.send命令不具备回车换行功能所以需要自己添加\r 或 \n 多分支模式语法第二种 expect { aaa {send AAA\r} bbb {send BBB\r} ccc {send CCC\r} } #只要匹配了aaa 或bbb或ccc中的任何一个执行相应的send语句后就会退出该expect语句 expect { aaa {send AAA\r;exp_continue} bbb {send BBB\r;exp_continue} ccc {send CCC\r} }  #exp_continue表示继续后面的匹配如果匹配了aaa执行完send语句后还会继续向下匹配bbb #捕捉内容要用双引号引起来 #send要写在{}中输出信息也要用双引号引起来分号“”要写在}里面。 在shell 中嵌套expect #!/bin/bashuserroot ip192.168.56.103 passwd123456expect -EOF set time 30 spawn ssh $user$ip expect {*yes/no { send yes\n; exp_continue }*password { send $passwd\n } } interact EOF其中 -EOF 和 EOF 包围的内容块被重定向到左侧命令 expect 的 stdin 中。 Shell Here Document内嵌文档/嵌入文档  Shell 还有一种特殊形式的重定向叫做“Here Document”目前没有统一的翻译你可以将它理解为“嵌入文档”“内嵌文档”“立即文档”。 所谓文档就是命令需要处理的数据或者字符串所谓嵌入就是把数据和代码放在一起而不是分开存放比如将数据放在一个单独的文件中。有时候命令需要处理的数据量很小将它放在一个单独的文件中有点“大动干戈”不如直接放在代码中来得方便。 Here Document 的基本用法 command EOF  document  EOF  command是 Shell 命令EOF是开始标志EOF是结束标志document是输入的文档也就是一行一行的字符串。 这种写法告诉 Shell 把 document 部分作为命令需要处理的数据直到遇见终止符EOF为止终止符EOF不会被读取。 注意终止符EOF必须独占一行并且要定顶格写。 分界符终止符可以是任意的字符串由用户自己定义比如 END、MARKER等ABC也可以只要前后一致分界符可以出现在正常的数据流中只要它不是顶格写的独立的一行就不会被作为结束标志。 结尾的标记一定要顶格写前面不能有任何字符除了空格 结尾的标记后面也不能有任何字符包括空格 expect变量如何定义和调用 expect 是一个在交互式命令行环境下自动化输入输出的工具。在使用 expect 时我们需要定义一个脚本来描述程序的交互过程然后通过 expect 命令来执行这个脚本。 在 expect 脚本中我们可以使用 set 命令来定义变量。例如下面的代码定义了一个名为 password 的变量并将其值设置为字符串 mypassword set password mypassword 在脚本中我们可以通过 $ 符号来引用变量。例如下面的代码将会输出变量 password 的值 puts $password 如果我们想要在 expect 脚本中调用外部命令并获取其输出可以使用 exec 命令。例如下面的代码将会调用 ls 命令并将其输出保存到变量 files 中 set files [exec ls] 在脚本中我们可以通过 $ 符号来引用变量。例如下面的代码将会输出变量 files 的值 puts $files 函数传参数给expect应该如何实现 在shell脚本中调用expect脚本时可以使用命令行参数将参数传递给expect脚本。具体实现方法如下 在shell脚本中定义需要传递的参数,例如 #!/bin/bashusernameuserpasswordpass # ./expect_script.sh $username $password 在expect脚本中使用$1、$2等变量来获取传递的参数例如 #!/usr/bin/expectset username [lindex $argv 0]set password [lindex $argv 1] 这样就可以将shell脚本中定义的参数传递给expect脚本了 #!/bin/bash ip_choice10.1.1.1 passwd123456con(){ /usr/bin/expect EOF | tail -n 1 spawn ssh root$ip_choice expect {*password: { send $passwd\r; exp_continue }*yes/no { send yes\r; exp_continue } } set spawn_id \$spawn_id puts \$spawn_id EOF }comad(){ spawn_id$(con) /usr/bin/expect EOF set spawn_id $spawn_id expect -i \$spawn_id *# send -i \$spawn_id echo hellow\r expect -i \$spawn_id *# send -i \$spawn_id echo hellow\r expect -i \$spawn_id eof EOF }comad spawn_id$(con)这条语句的作用是调用con函数并将con函数的输出也就是spawn_id赋值给spawn_id变量 Expect脚本中set命令用于设置变量的值而puts命令用于打印输出。在这个例子中set spawn_id $spawn_id是将当前spawn的进程ID也就是SSH连接的ID赋值给变量spawn_id而puts $spawn_id则是将这个变量的值打印出来。 expect 命令会开的SSH启动一个连接expect -i $spawn_id和send -i $spawn_id来指定我们要在哪个连接上执行命令 | tail -n 1这是一个管道命令它接收前一个命令的输出作为输入。tail -n 1命令会输出输入的最后一行。在这个例子中它会输出expect脚本的最后一行的输出意思是执行expect脚本并返回脚本输出的最后一行。这个输出被赋值给spawn_id变量然后在comad函数中被使用。 用法说明 Expect是一种将现有的实用程序组合起来的胶合剂通常考虑的是如何使Expect利用系统现有的工具解决问题而不是如何在Expect中解决问题。 Expect主要应用涉及商用软件产品。很多这类的产品都会提供某种命令行工具但这些工具缺乏脚本编程的能力只是为了帮助用户管理产品而商家通常不会在如何实现一个稳定性好的脚本语言上耗费很多精力。Expect脚本中可以包含shell查询环境变量通过执行某些Unix命令获得更多的信息然后在产品所带命令行接口中加入必须的信息来完成用户的目标。在产品命令行接口中查询相关信息该脚本可以在多种选择中智能地决定当前应该做什么比较合适。 每次Expect操作完成运行结果将保存在本地环境变量 $expect_out 中。这允许脚本收集这些信息给用户以相应的反馈同时也允许根据当前情况发送相对应的指令。 Expect通常用来建立一组测试套件可以用在程序、组件或者嵌入式系统中。DejaGnu就是利用Expect写成的一组测试套件。它被大量地应用于测试 gcc对于远程目标的测试例如嵌入式开发也是非常合适的。 你可以利用一种叫作”autoexpect”的工具自动生成expect脚本。这个工具观测你的操作并利用启发性知识生成expect脚本。尽管生成的代码可能会很长含义上有点模糊你可以修改生成的脚本使它成为你需要的代码。 观点 利 Expect可通过cron封装系统管理任务在规定的时期运行。能够这样做是因为Expect仅仅使用已经安装在主机中的系统管理工具不需要学习额外的工具。如果程序员学过Tcl那么转移到Expect是一件非常简单的工作相同的编程结构和语法再加上一些内置的额外功能。 业界对室内管理任务使用Expect提供了很大的支持。Expect在很多的公司广泛使用例如Silicon Graphics, IBM, HP, Sun, Xerox, Amdahl, Tektronix, atT, ComputerVision和世界银行利用Expect对开发项目、文件传输、帐号管理、网络测试进行室内自动测试。 Expect已经以多种模块的方式移植到Python和perl语言中。Expect命令的部分子集移植到Java和嵌入到SwichTermJ基于Java的终端仿真器之中。这些例行程序通常是原程序的同等功能的另一种解释方式。一旦你理解了其中的概念如果需要的话换到其它语言也就很容易了。 弊 Expect继承了Tcl的语法规范对于使用其它脚本语言的人来说这是相当陌生的。和其它语言如bash、csh和Perl相比Expect的语法模式是不同的。就像有时候一个变量的前缀冠以”$”有时候又不需要。有些版本的Expect和Perl、Python语言的语法倒是很相似的。 另一个缺陷是在不同的平台移植Expect脚本很难。例如一个Expect脚本使用基于Unix的工具就不可能适合移植到Windows平台。如果可能的话程序员必须找到相应的命令行程序能够提供相同的信息这就可能需要修改expect脚本的send部分而这部分恰恰就是整个脚本的核心。如果你使用的是tcl,perl或者python这些独立于平台的工具使用它们各自的POSIX接口访问文件、对远端交互进行标准的POSIX处理telnet,ftp等等就不会出现上述问题。 一个不明显的缺陷是有时Expect可能并不是解决问题的最好方法。例如一个系统管理员需要登录到多个服务器这些自动的操作要使用Expect就得配以保存的密码而不是更安全的解决方案采用ssh代理密钥。虽然这种自动交互工具很吸引人但是还是有很多其它的办法可以更安全稳定地解决同样的问题。 Expect自动化控制命令行工具但是对图形用户界面就失效了。Windows提供了不少有价值的工具很多是基于图形用户界面的这就是Expect失效的地方了。Windows下图形界面程序可以通过像Autohotkey或者AutoIt等工具来实现自动化控制。
http://www.dnsts.com.cn/news/100166.html

相关文章:

  • 小说写作网站摄影网站设计与实现
  • 南昌网站建设搜q.479185700上海何时开放娱乐场所
  • x wordpress theme资源网站优化排名
  • 广州微信网站建设如何wordpress调取留言页面
  • 个人备案网站经营时钟插件+wordpress
  • 广西壮族自治区住房和建设厅网站外贸营销
  • 济南建设项目竣工验收公示网站张家界简单的网站建设
  • 网站在线建站大连在哪个省份哪个市
  • 网站开发视频如何节省流量现代感的传媒公司名称
  • 辽宁网站建设找哪家网站开发技术栈
  • 网站建设与维护报告总结模板之家官网手机模板
  • 营销型网站建设 多少钱微软网站开发
  • 数据库网站 建设方案东莞合一网络科技有限公司
  • 整站网站优化长沙中建设计院网站
  • 山东有实力的网站开发多少钱沈阳网站制作机构
  • wordpress上传网站模板活动策划书模板
  • 建设部网站资质升级公示深圳市做网站前十强
  • 家庭办厂3一8万项目seo推广的特点有
  • 长沙企业建站按效果付费安卓应用市场官方版下载
  • 北京黄村专业网站建设价钱qq群排名优化软件购买
  • 免费个人网页制作网站一个简单的html网页
  • 购物网站seo搜索引擎前期分析微信朋友圈怎么投放广告
  • 网站设计网页设计公司wordpress 搞笑网站
  • 肯德基网站是哪家公司做的电子商务网站建设功能
  • 最新网站技术青岛比较知名的网站建设公司
  • 网站电脑速成培训班随州程力网站建设
  • 网页设计感十足的网站google关键词排名查询
  • 台州企业网站搭建图片有哪些网站可以做笔译
  • 昆山智能网站建设注册公司找黄牛一般多少钱
  • 宁波做公司网站的公司制作图片的电脑软件