免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4049 | 回复: 9
打印 上一主题 下一主题

没有expect怎么实现交互式? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-17 11:10 |只看该作者 |倒序浏览
需要ssh登陆远程主机,并做一些简单操作(如,统计某些文件的总大小),然后退出。

已知资源:
1、没有安装expect。(不要告诉我说“安装一个啊!”,别人主机,不能这样的哦)
2、远程主机要求必须使用密码登陆。(所以,设置远程主机不用密码是不可以的哦)
3、here document不好使哦,报“Pseudo-terminal will not be allocated because stdin is not a terminal”因为ssh命令要求tty输入。用FIFO文件也不行哦,也是以上错误,导致要发送的信息全积压在管道中,同时使用 -tt参数依然不好使。


崩溃边缘,望大牛,高手搭救……阿门~

一些参考:
http://bbs.chinaunix.net/archiver/?tid-740558.html
http://bbs.chinaunix.net/viewthread.php?tid=674903&page=1
http://blog.csdn.net/annicybc/archive/2008/11/04/3216041.aspx

论坛徽章:
0
2 [报告]
发表于 2009-12-17 11:18 |只看该作者
ssh 要想以non-interactive 模式运行, 只能用public key 认证, 不能用password

然后 ssh [user@]hostname [command]

command就是你要在remote 机器上执行的程序/命令

论坛徽章:
0
3 [报告]
发表于 2009-12-17 11:24 |只看该作者

回复 #2 nhw_cs 的帖子

忘了一点最关键的了,要求用shell脚本实现。

所以不管用public key 或 password,怎么取得remote host 的信任啊?怎么实现

论坛徽章:
0
4 [报告]
发表于 2009-12-17 11:36 |只看该作者
原帖由 beingshadow 于 2009-12-17 11:24 发表
忘了一点最关键的了,要求用shell脚本实现。

所以不管用public key 或 password,怎么取得remote host 的信任啊?怎么实现



从你的话里就能看出并你不理解shell脚本的本质, 这也是很多初学者不明确的地方, shell脚本除了需要调用的built-in外(built-in才是这正的shell 命令), 更需要借助调用相应功能的外部程序, 包括所谓的标准UNIX命令如date, awk, sed 等 ..再如, 如果你想用shell脚本对oracle进行操作, 就必须调用类似sqlplus的这样的外部程序

ssh 在你的脚本中调用, 当然就是所谓的shell脚本实现, 你想不这么称呼都不行 ...概念很重要, 问题的本质很重要

怎么做:

(1) 配置系统使public key 认证生效 ( 我估计你会问怎么配置, 我现在没时间多说)
(2) 在你的脚本中直接写命令: ssh [user@]hostname [command]   即可

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
5 [报告]
发表于 2009-12-17 11:40 |只看该作者
socat 或者 telnet

论坛徽章:
0
6 [报告]
发表于 2009-12-17 11:42 |只看该作者

回复 #4 nhw_cs 的帖子

谢谢大牛,我的确刚接触脚本,说以概念上正在努力纠正,谢谢提醒。

生成密钥的配置我正在看,google到了,不麻烦您了就,呵呵

有个问题,既然这样启动的是non-nteractive,那么我在remote host 上面执行一些awk命令的结果能够返回并被正确接收到吗?

论坛徽章:
0
7 [报告]
发表于 2009-12-17 11:47 |只看该作者
原帖由 beingshadow 于 2009-12-17 11:42 发表
谢谢大牛,我的确刚接触脚本,说以概念上正在努力纠正,谢谢提醒。

生成密钥的配置我正在看,google到了,不麻烦您了就,呵呵

有个问题,既然这样启动的是non-nteractive,那么我在remote host 上面执行一 ...



当然能接收到, 否则怎么进行进一步处理? 给你举个例子,

ssh user@hostA "date" > urfile

date命令在hostA上执行, 输出hostA的机器时间, 然后保存在你脚本所在的机器上的文件urfile中 .... 你应该明白了一切 ....

论坛徽章:
0
8 [报告]
发表于 2009-12-17 11:48 |只看该作者

回复 #5 r2007 的帖子

谢谢你的建议,
socat命令没有,telnet权限没开,呵呵

论坛徽章:
0
9 [报告]
发表于 2009-12-17 11:51 |只看该作者

回复 #7 nhw_cs 的帖子

明白,明白。谢谢大牛兄。我搞定public key的文档先~

再次表示感谢

论坛徽章:
0
10 [报告]
发表于 2009-12-17 13:05 |只看该作者
另一个办法是用SecureCRT, 使用vbs脚本可以实现交互试的操作,很酷!呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP