免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: shell新手
打印 上一主题 下一主题

请教问题!如何通过ssh及expect执行本机上的脚本但在远程机器上运行 [复制链接]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
11 [报告]
发表于 2011-10-09 10:55 |只看该作者
回复  waker



  我的意思是想把expect脚本放在bash脚本里,而不是用shell去调用expect的脚本,不单 ...
shell新手 发表于 2011-10-09 09:51


呵呵,换个描述方法吧,看不懂你7#在问什么?怎么放到...通常复制粘贴就行,实在不行用键盘输入也没几个字

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
12 [报告]
发表于 2011-10-09 11:10 |只看该作者
你spawn ssh B以后,expect就在B机上获得一个shell,它只要把A机的文件读出来扔给这个shell就行了
expect不过充当了你的眼睛(read)和手指(send)
所以就是一句简单的send [read [open urfile r]]

论坛徽章:
0
13 [报告]
发表于 2011-10-09 11:36 |只看该作者
回复 12# waker


    谢谢老大,我在研究一下。

多谢!

论坛徽章:
0
14 [报告]
发表于 2015-06-29 17:00 |只看该作者
本帖最后由 651046919 于 2015-06-29 18:10 编辑

回复 4# waker


hi waker
     请教个问题,我目前遇到一个expect文件句柄写到远程文件的问题,能帮忙分析下吗?该怎么处理这个问题,或者怎么open远程文件呢?
     从报错信息来看expect把保存文件信息的变量\$File_a 一次分行输出后,最后一行才加上>> ${cp_file}输出的
     OS:CentOS 5.5
     expect:5.43.0
     示例原文件:
     s:
futction asd()
{
    echo asd
}
asd
      代码如下(写文件部分):
         $cmd为文件s
         ${cp_file}为文件 /tmp/ex_login.sh

                            set File [read [open "$cmd"  r]]
                            set File_a [string trimright  \$File "\t\n"]
                            send "echo \$File_a >> ${cp_file}\r"
      报错如下:
                           
[Server]# echo futction asd()
-bash: syntax error near unexpected token `('
[Server]# {
> echo asd
> }
asd
[Server]# asd >> /tmp/ex_login.sh
-bash: asd: command not found
   


   

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
15 [报告]
发表于 2015-06-30 17:05 |只看该作者
回复 14# 651046919

你的问题是把expect脚本当shell脚本运行了


   

论坛徽章:
0
16 [报告]
发表于 2015-06-30 18:16 |只看该作者
本帖最后由 651046919 于 2015-06-30 18:21 编辑

回复 15# waker


    是在shell里面嵌套的tcl,想在面交互的时候把本地的shell脚本生成到远程然后调用;我把本地的文件存到了tcl的\$File_a变量中(因为是嵌套的所以\防止shell解析),然后想通过echo命令把\$File_a当成字符串的方式重定向成一个文件,这杨就报错,之前有项目这杨搞过,是可行的;现在却不行,不清楚是不是OS或者expect版本原因,所以找你帮忙看下
   提取出tcl代码用expect解释器单独调用试试,多谢了

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
17 [报告]
发表于 2015-06-30 19:30 |只看该作者
回复 16# 651046919

futction
function
   

论坛徽章:
0
18 [报告]
发表于 2015-06-30 19:38 |只看该作者
回复 17# waker


    可以解释下么,我把tcl代码独立到exp文件还是一样的报错哦,shell脚本里面的话会包含方法之类的,是不是这杨的脚本通过send到远程生成文件的方式行不通呢?

论坛徽章:
0
19 [报告]
发表于 2015-06-30 21:17 |只看该作者
回复 17# waker


    多谢帮助;已搞定;
    用了个笨办法,在远程调用了expect,然后转化下字符串写文件成功;
                            send "expect\r"
                                    expect "expect*>" {send "set file_r \[open ${cp_file} w+\]\r"}
                                    expect "expect*>" {send "set File_aa {$File_a}\r"} #这个地方要用{}把文本括起来,不然也报之前的错
                                    expect "expect*>" {send "puts \$file_r \$File_aa\r"}
                                    expect "expect*>" {send "close \$file_r\r"}
                                    expect "expect*>" {send "exit\r"}

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
20 [报告]
发表于 2015-07-01 06:52 |只看该作者
回复 19# 651046919


    在我看来你上面的也没大问题, 只是把 function这个词写错了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP