编写shell脚本

时间:2011-12-02 03:12:56

标签: shell expect csh

最近,我参与了使用csh shell在SunOS上编写shell脚本。我会有多个查询,但首先是短程序无效。

[username]% expect - << EOF  
Spawn telnet 74.125.71.103  
expect "Password:"  
send "google\r"  
EOF 

弹出以下错误:

/bin/csh: Event not found  
[username]% expect: Command not found  

请告知。

此脚本应按以下方式运行:

  1. Telent IP并使用现有的passwd(在脚本中明确指出)。
  2. 在telnet之后,它显示了MENU选项
  3. MB站
  4. RC
  5. ODU
  6. AP
  7. SU
  8. 退出

      

    类型1 //“MB站”菜单选项将打开,即

  9.      1 - 显示
      2 - 单位控制

         

    类型2 // UC菜单选项将打开,即

    1 - 更改密码
    2 - 重置

      

    类型1 //更改密码菜单选项将打开,即

    1 - 更改PC密码
    2 - 更改LU密码
    3 - 更改管理员密码

      

    键入3 //更改ADMIN passwd

    MB站 - 更改管理员密码
    输入新密码:XYZ输入
    重新输入密码:XYZ输入

    接受新密码

    3次逃脱//逃离telnet

    1.MB站
    2. RC
    3. ODU
    4. AP
    5. SU
    6.退出

      

    输入6 //退出
      出口? [是/否] y

    与主机的连接丢失。

    然后转向使用不同IP的步骤。一旦用户在提示时执行脚本,IP值将由用户给出,例如./pass-change IPs.txt

2 个答案:

答案 0 :(得分:1)

Event not found消息暗示您正在尝试进行某种历史记录替换。这通常涉及!字符。你在某个时候输入了!字符的东西吗?

expect: Command not found就是它所说的:shell无法找到expect命令。它安装了吗?如果没有,您应该安装它,或者请系统管理员为您安装,或者,如果失败,obtain the source并在您的主目录下构建并安装它。

一旦你解决了这个问题,就会有一个名为spawn的expect命令,它区分大小写; Spawn将无法识别。

如果您明确询问如何在不使用expect 的情况下完成上述,请更新您的问题以明确说明。

答案 1 :(得分:0)

我下面有一个工作脚本,你收到错误,因为我相信你正试图用sh或其他命令运行脚本。尝试将其作为./script运行。我使用下面的示例脚本进行文件传输但是我通过ssh来回做了一次密钥交换,这是一次性活动。     #!/ usr / bin / expect -f     设置超时130     spawn ssh“idk@server.com”     期待“密码:”     发送“pass @ 1234 \ r”     期待“$”     发送“sh /home/nathalok/HTML/run.sh\r”     期待“$”     发送“exit \ r”