当前位置: 澳门新濠3559 > 操作系统 > 正文

如果没有这一句登录完成后会退出,每次输入密

时间:2019-12-08 05:50来源:操作系统
  =========================================== send命令:发送相应的一声令下到开荒板上。 注脚:expect到底是怎样? expect是后生可畏种脚本语言,使用起来特轻易,大家看前面包车型地铁例子即

 

===========================================

send命令:发送相应的一声令下到开荒板上。

注脚:expect到底是怎样?
expect是后生可畏种脚本语言,使用起来特轻易,大家看前面包车型地铁例子即能够理解到了

 

补偿有些内容:

剧本的成效不明而喻,在不菲次的起步开采板进程中,不断登入确确实实占用了本身大方的小时及精力;

风度翩翩、简便切换顾客:

 

对如上内容能够详细分解如下:expect spawn、linux expect 用法

!/usr/bin/expect -f的意义:

除此以外尝试修改sh,只怕alias,使其所在能够调用,并非只好到固定地方实施脚本才方可,也许特别优化。

 1 #!/usr/bin/expect -f 
 2 set user xxxx
 3 set password xxxx
 4 set timeout 5
 5 spawn adb shell
 6 expect "*login:*" 
 7 send "$userr"
 8 set timeout 5 
 9 expect "*assword:*" 
10 send "$passwordr" 
11 
12 
13 interact

通过expect,完结人机联作式登入,且看如下脚本:

若是在usr/bin中绝非expect的话,直接英特网寻找安装的艺术,Ubuntu系统直接apt-get就能够了。

 

interact命令:实践到位后维持相互作用状态,把调节权交给调节台,当时就能够手工业操作了。如果未有这一句登陆成功后会退出,并不是留在远程终端上。若是你只是登陆过去实行 

一,什么是expect?
在做系统管理时,我们不菲时候要求输入密码,举个例子:连接 ssh,连接ftp,
那么怎么样能一呵而就不输入密码吗?
大家供给有四个工具,能代表我们兑现与终极的交互作用,
那么,便是它:expect,管理员的最棒的情人之风度翩翩 
它能够替代我们兑现与终极的交互,我们不要再伺机在微Computer旁边输入密码,
唯恐依据系统的出口再运行相应的下令,
这几个都得以由expect取代大家来成功

 

使用expect自动登入

于是乎上网依照自个儿的实际上编写了二个剧本:

root@hao-ubuntu:/home/hao#
自然也得以追加一些if剖断之类,让别的客商切换也不用输入密码。具体依照个体钟爱自身纠正完备。

 

增加补充部分详细

spawn命令行:

当然此脚本稍稍能够带动福利,可是也存在安全风险。

spawn su
expect "Password:"
exec sleep 1
send "rootr"
expect "#"
interact
hao@hao-ubuntu:~$ ./su_root.sh
spawn su
Password:

使用expect完毕活动登陆的本子,网络有数不尽,可是都未曾叁个驾驭的表明,初读书人日常都以照抄、收藏。不过怎么要那样写却不知其然。本文用三个最短的事例表明脚本的准则。 
  脚本代码如下: 
  ############################################## 
  #!/usr/bin/expect 
  set timeout 30 
  spawn ssh -l username 192.168.1.1 
  expect "password:" 
  send "ispassr" 
  interact 
  ############################################## 
  1. [#!/usr/bin/expect] 
  这意气风发行告诉操作系统脚本里的代码应用那个shell来实行。这里的expect其实和linux下的bash、windows下的cmd是黄金年代类东西。 
  注意:那生机勃勃行需求在剧本的第后生可畏行。 
  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 "ispassr"] 
  这里正是实践交互动作,与手工输入密码的动作相近。 
  温馨提示: 命令字符串结尾别忘记加上“r”,假若现身万分等待的状态能够核实一下。 
  6. [interact] 
  实行到位后维持相互作用状态,把调控权交给调节台,那时候就能够手工操作了。若无这一句登入成功后会退出,实际不是留在远程终端上。假使您只是登入过去实施 
  #!/usr/bin/expect #注意安装的路线,不显著 whereis expect 一下 
  # Change a login shell to bash 
  set user [lindex $argv 0] 
  spawn bash $user 
  expect "]:" 
  send "/bin/bash " 
  expect eof 
  exit

二、人机联作式登陆:

切换客户,每一趟输入密码,相比较麻烦,能够接纳脚本人机联作式登入达成,每一趟只要输入./su_ 并tab,实施此脚本,就可以切换至root客户,比较轻松。如下:

备考:因为expect是依靠tcl的,所以要求您的体系中安装有tcl
怎么着检查?
[root@dev ~]# whereis tcl
tcl: /usr/lib/tcl8.4 /usr/share/tcl8.4
若果看不到结果,请先安装tcl
安装,
[root@dev ~]# yum install expect
也能够从

hao@hao-ubuntu:~$ cat login.sh
#!/usr/bin/expect -f
set ipaddr "192.168.77.58"
set passwd "hao"
spawn ssh hao@$ipaddr
#spawn 意思是施行命令,expect内命令,shell中不设有
expect {
"yes/no" { send "yesr"; exp_continue}
"password:" { send "$passwdr" }
}
#expect "]# "
#echo '----------------login $ipaddr SUCC!--------------'
#send "touch a.txtr"
#意思为发送命令
#send "exitr"
expect eof
exit

hao@hao-ubuntu:~$ cat su_root.sh
#!/usr/bin/expect

三,安装expect

set timeout 3

 

编辑:操作系统 本文来源:如果没有这一句登录完成后会退出,每次输入密

关键词: