红联Linux门户
Linux帮助

求教:shell 脚本里如何 执行二级命令啊

发布时间:2010-09-09 11:24:13来源:红联作者:zzm35837995
想把 sudo asterisk -r
sip reload
exit
写成一个shell脚本,我是这样写的
#! /bin/bash

sudo asterisk -r
sip reload <exit
EOF

但是只能执行sudo asterisk -r 下面的就不执行了, 应该怎么写呢?
文章评论

共有 9 条评论

  1. mynameisxuchun 于 2010-09-10 16:49:29发表:

    我新人一个,看看大家QQ:976236692

  2. zzm35837995 于 2010-09-10 14:10:04发表:

    1 #! /bin/bash
    2
    3 sudo asterisk -r << EOF
    4 sip reload
    5 exit
    6 EOF
    这个脚本为什么执行起来会不停的打 heizi-desktop*CLI> heizi-desktop*CLI> heizi-desktop*CLI>

  3. zzm35837995 于 2010-09-10 13:39:28发表:

    引用:
    系统里没有expect和send吧。
    看看这个命令的输出:type expect
    alick 发表于 2010-9-10 11:45



    我的代码是这样的
    #! /usr/bin/expect -f

    spawn sudo asterisk -r
    expect "heizi-desktop*CLI> "
    send "sip reload\r "
    set timeout 0
    expect eof
    大体上是可以实现功能了, 但还有点小问题,在输入 sip reload 之后会停一段时间,且不用exit, 然后就跳出 heizi-desktop*CLI> 回到heizi@heizi-desktop: ,如果不加set timeout 0 会更长时间,估计有十几秒

  4. alick 于 2010-09-10 11:45:21发表:

    系统里没有expect和send吧。
    看看这个命令的输出:[code]type expect[/code]

  5. zzm35837995 于 2010-09-10 08:58:26发表:

    引用:
    #! /bin/bash
    asterisk -r
    sip reload
    ybsolar 发表于 2010-9-9 20:14


    还是不能执行 sip reload啊,

  6. zzm35837995 于 2010-09-10 08:57:27发表:

    引用:
    sudo asterisk -r
    这是一个交互式的命令?是的话考虑使用expect
    alick 发表于 2010-9-9 19:12


    我也用expect试了下,我是这样写的
    #! /usr/bin/expect -f
    2
    3 spawn sudo asterisk -r
    4 set timeout 300
    5 expect"*CLI>"
    6 send "sip reload\r"
    7 set timeout 300
    8 send "exit\r"
    9 expect eof
    10 运行之后 报
    ./asterisk1: line 3: spawn:找不到命令
    ./asterisk1: line 5: expect*CLI>:找不到命令
    ./asterisk1: line 6: send:找不到命令
    ./asterisk1: line 8: send:找不到命令
    couldn't read file "eof": no such file or directory

  7. ybsolar 于 2010-09-09 20:14:30发表:

    #! /bin/bash
    asterisk -r
    sip reload <exit
    EOF


    然后以sudo运行整个脚本!

  8. alick 于 2010-09-09 19:12:52发表:

    sudo asterisk -r
    这是一个交互式的命令?是的话考虑使用expect

  9. viesdn 于 2010-09-09 14:54:31发表:

    帮你顶个