仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 601|回复: 7
打印 上一主题 下一主题

[其他Linux] 来讲讲:经由过程expect让ssh主动交互

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 12:05:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
看不懂man文档的人.在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.
利用expect完成ssh主动交互
  上面是利用expect完成的主动远端命令实行的剧本ssh-exec:
  #!/bin/sh
  #
  execexpect--"{GetProperty(Content)}"${1+"$@"}
  #ssh-exechostuserpasswordcommand
  #executecommandonremotehost
  exp_version-exit5.0
  setERR_PERMISSION_DENIED1
  setERR_DIR_OR_FILE_NOT_EXIST2
  setERR_TIMEOUT3
  setERR_CONNECTION_REFUSED4
  setERR_INVALID_ARGUMENT5
  procauth_trans{password}{
  upvar#0ERR_PERMISSION_DENIEDERR_PERMISSION_DENIED
  upvar#0ERR_DIR_OR_FILE_NOT_EXISTERR_DIR_OR_FILE_NOT_EXIST
  send"$password"
  expect{
  #passwordnotcorrect
  "Permissiondenied,pleasetryagain."{
  exit$ERR_PERMISSION_DENIED
  }
  #...transmissiongoesafter...
  -re"Isadirectory|Nosuchfileordirectory"{
  exit$ERR_DIR_OR_FILE_NOT_EXIST
  }
  -re"KB/s|MB/s"{
  settimeout-1
  expecteof
  }
  }
  }
  if{$argc!=2}{
  send_user"usage:remote-execcommandpassword
"
  send_user"commandshouldbequoted.
"
  send_user"Eg.remote-exec"sshls;echodone"password
"
  send_user"or:remote-exec"scp/local-file:/remote-file"password
"
  exit$ERR_INVALID_ARGUMENT
  }
  setcmd[lindex$argv0]
  setpassword[lindex$argv1]
  evalspawn$cmd
  #timeoutinsec,default10
  settimeout30
  expect{
  #firstconnect,nopublickeyin~/.ssh/known_hosts
  "Areyousureyouwanttocontinueconnecting(yes/no)?"{
  send"yes"
  expect"password:"
  auth_trans$password
  }
  #alreadyhaspublickeyin~/.ssh/known_hosts
  "password:"{
  auth_trans$password
  }
  #userequivalencealreadyestablished,nopasswordisnecessary
  -re"kB/s|MB/s"{
  settimeout-1
  expecteof
  }
  -re"Isadirectory|Nosuchfileordirectory"{
  expecteof
  exit$ERR_DIR_OR_FILE_NOT_EXIST
  }
  "Connectionrefused"{
  expecteof
  exit$ERR_CONNECTION_REFUSED
  }
  #connetionerror
  timeout{
  exit$ERR_TIMEOUT
  }
  }
</p>
开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。
老尸 该用户已被删除
沙发
发表于 2015-1-19 15:58:19 来自手机 | 只看该作者
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
只想知道 该用户已被删除
板凳
发表于 2015-1-28 07:50:33 | 只看该作者
应对Linux的发展历史和特点有所了解,Linux是抢占式多任务多用户操作系统,Linux最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-5 19:45:59 | 只看该作者
另外Linux上也有很多的应用软件,安装运行了这些软件后,你就可以在Linux上编辑文档、图?片,玩游戏、上网、播放多媒体文件等。
爱飞 该用户已被删除
5#
发表于 2015-2-13 10:08:09 | 只看该作者
随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。
蒙在股里 该用户已被删除
6#
发表于 2015-3-3 20:28:13 | 只看该作者
现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。
因胸联盟 该用户已被删除
7#
发表于 2015-3-11 13:30:32 | 只看该作者
眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。
小魔女 该用户已被删除
8#
发表于 2015-3-26 18:45:21 | 只看该作者
对我们学习操作系统有很大的帮助,加深我们对OS的理解。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-14 23:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表