导航:首页 > 程序命令 > expect命令

expect命令

发布时间:2022-05-27 08:26:29

① 在shell(#!/bin/sh)脚本中怎么使用expect命令,需要添加什么环境变量吗,正确即给分

1、首先检查你机器上有没有expect(我知道ubuntu默认是没有安装的)
ls /usr/bin | grep expect 看看有没有装expect
2、没有的话需要安装
在ubuntu的软件安装中心,搜索tcl 和tk 和expect并安装;
也可以命令行输入sudo apt-get install tcl tk expect
3. 环境ready了后,可以在shell脚本中用Here document的方式使用expect命令
例子参见:http://..com/question/397085991.html
Here document格式如下:
expect <<!
这中间都是expect命令
!
为防止错误,建议都顶格写,前面不要留空格。

linux的expect代码,发现如果不加interact,则send命令好像没有执行,如果加上interact命令才执行。

常见的做法是将interact换成 expect eof ,从而可以捕获到spawn命令启动的进程的结束状态。
如果坚持使用interact可以在命令执行完成后依然保持在登陆在远程服务器上,可以直接手工敲命令进行交互,完成后续工作,最后需要exit退出ssh远程登陆。
至于去掉interact却没有使用expect eof的情况下send没有执行的问题,主要是因为因为spawn会启动一个进程,但是没有捕获匹配eof或者time out事件造成的

③ 使用 expect 的时候,怎么使用shell的命令啊

expect 用的是 tcl 语言,你可以用
exec sleep 1
if { [file isfile certs/cert.key] } {
send_user "file existing"
} else {
send_user "file not existing"
}

更多细节可以去学一下 tcl 语言。

④ expect学习之如何获取命令行参数和函数参数

比如下面脚本用来做ssh无密码登陆,自动输入确认yes和密码信息,用户名,密码,hostname通过参数来传递

ssh.exp

Python代码
#!/usr/bin/expect
set timeout 10
set username [lindex $argv 0]
set password [lindex $argv 1]
set hostname [lindex $argv 2]
spawn ssh--id -i .ssh/id_rsa.pub $username@$hostname
expect "yes/no"
send "yes\r"
expect "password:"
send "$password\r"

expect eof

执行脚本./ssh.exp root pasword hostname1

expect接收参数的方式和bash脚本的方式不太一样,bash是通过$0 ... $n 这种方式,而expect是通过set <变量名称> [lindex $argv <param index>],例如set username [lindex $argv 0]

⑤ windows expect怎么使用

你是说shell的expect么,我有个ssh自动登录的脚本,你看下1. [#!/usr/bin/expect]

2. [set timeout 30]
基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒

3. [spawn ssh -l username 192.168.1.1]
spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。
它主要的功能是给ssh运行进程加个壳,用来传递交互指令。

4. [expect "password:"]

这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒

5. [send "ispass\r"]
这里就是执行交互动作,与手工输入密码的动作等效。
温馨提示: 命令字符串结尾别忘记加上 “\r”,如果出现异常等待的状态可以核查一下。

6. [interact]
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行

⑥ expect什么意思

expect意思是期望;指望;认为;预料;期待;预期。

expect的基本意思是“期待”“料想”,指相信或盼望有人会来或有事会发生,这种预料多有一定的根据,强调的是客观可能性,多用于好的方面,在口语中expect的意思常淡化为“认为”“想”,此时主语多为第一人称单数。

expect多用作及物动词,可接名词、代词、动词不定式或that从句作宾语,也可接以动词不定式充当补足语的复合宾语。

expect所接的that从句在表示“预料”“期望”时可用虚拟式,在作“想”“认为”解时可用陈述式,that有时可以省略。

(6)expect命令扩展阅读:

desire,wish,hope,expect,want,long这些动词都有“希望”之意。

1、desire语气较正式庄重,着重渴望的力量与热切,常含有强烈的意图和目的。

2、wish语气较弱,多指难于实现或不可能实现的愿望。

3、hope指对愿望实现有一定信心的希望。

4、expect通常指有很大程度的把握,但仍含有预料之意,或预计某事或某行动的发生。

5、want一般指所想要的东西是切望得到的东西,能弥补实际需要。

6、long语气强,指极殷切地盼望着,这种盼望侧重于很难或不可能得到的东西。有时也指一般愿望,但含一定感情色彩。

⑦ linux expect讲解怎么使用

[root@zuozhang PYTHON_TEST]# rpm -ql expect package expect is not installed 查看是否有安装,如果没有安装安装一个即可。 yum install expect*

⑧ expect如何将命令结果赋值给变量

改成 send “exit \$ret\r” ret 变量是 ssh 到远端后shell里面定义的 (即你之前的send "ret=`echo $?`\r") ,所以要把 $ 用 \ 转意,否则 $ret 指的是 expect 里的ret变量,你在 expect 里当然没有定义过这个变量了,所以出错。

⑨ 如何判断expect中调用的命令是否成功

set time 300应该是set timeout 300吧。你可以在set timeout命令前面或者后面加一条命令:log_file /tmp/expect.log复制代码然后从log里面看命令是否执行成功了。回复 1# baochenggood

⑩ linux远程重启windows

安装步骤:

1、进入链接下载最新 OpenSSH-Win64.zip(64位系统),解压至C:Program FilesOpenSSH

2、打开cmd,cd进入C:Program FilesOpenSSH(安装目录),执行命令:

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

3、设置服务自动启动并启动服务:

sc config sshd start= auto

net start sshd

到此服务已经安装完毕,默认端口一样是22,默认用户名密码为Window账户名和密码,当然防火墙还是要设置对应端口允许通讯

修改设置:

通常linux下会修改ssh_config文件来修改ssh配置,但在安装目录并没有发现这个文件,查阅官方wiki后发现,原来是在C:ProgramDatassh目录下(此目录为隐藏目录)

端口号:Port 22

密钥访问:PubkeyAuthentication yes

密码访问:PasswordAuthentication no

空密码:PermitEmptyPasswords no

然后进入C:Users账户名.ssh目录,创建authorized_keys公钥文件(也可在ssh_config修改路径)(仅限7.7之前版本,7.9版本请看最后更新)

设置完成后重启sshd服务,接下来就可以使用Xshell等工具使用密钥连接了~

踩过的坑:

命令行不识别空格时:C:Program Files用C:Progra~1替代

Windows Service2012R2即使配置了.ssh/authorized_keys公钥,连接时依然显示没有注册公钥。。。

查阅了官方wiki判断可能是权限问题:Fix SSH file permissions

进入C:Program FilesOpenSSH(安装目录),右键 FixHostFilePermissions.ps1【使用PowerShell运行】,命令行提示全选是,重启sshd服务后密钥连接正常

2019.5.17更新:

新部署服务器的时候,发现公钥无法注册,发现新版本有变动:

执行的命令为:

  • ./deploy/startwin 10.24.196.213 administrator Test1127?!

  • 阅读全文

    与expect命令相关的资料

    热点内容
    程序员告白妈妈不同意 浏览:327
    攻城掠地怎么查看服务器 浏览:592
    android开机黑屏 浏览:568
    mc纯生存服务器是什么意思 浏览:440
    树莓派火焰蜂鸣器python 浏览:898
    我的世界服务器强制疾跑怎么开 浏览:277
    用什么app看施工图纸 浏览:493
    张三学python函数 浏览:379
    女子程序员照片 浏览:307
    武汉c程序员招聘 浏览:683
    csk跟踪算法 浏览:26
    数据挖掘中用到的算法 浏览:845
    更改ubuntu服务器地址 浏览:504
    学做烧菜用什么app 浏览:704
    程序框图怎么加密 浏览:374
    文件自解压失败怎么办 浏览:901
    ug操作和产品命令 浏览:81
    QQ在线表格怎么加密 浏览:486
    steam星际战甲什么服务器 浏览:598
    python重启路由器脚本 浏览:823