2011-12-02 84 views
0

最近,我参与了使用csh shell编写SunOS shell脚本的准备。我将有多个查询,但首先短程序不起作用。准备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. 远程登录后,它示出了菜单选项
  3. MB站
  4. RC
  5. ODU
  6. AP
  7. SU
  8. 退出

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

1 - 显示
2 - 单元控制

2型// UC菜单选项会打开即

1 - 更改密码
2 - 复位

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

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

型3 //改变ADMIN passwd文件

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

新密码接受

3倍逸出//从远程登录

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

类型6 //退出
退出? [Y/N] y以丢失的主机

连接。

然后移动到不同IP的步骤。在提示处执行脚本时,用户一次性给出IP值。 ./pass-change IPs.txt

+0

问题出在第一句:'with csh shell'。请勿使用[C Shell](http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/)进行严肃的编程。 –

回答

1

Event not found消息意味着你试图做一些历史替换。这通常涉及!字符。你在某个时候输入了一个!的字符吗?

expect: Command not found意思就是说:shell无法找到expect命令。它是否安装?如果没有的话,你应该安装它,或者让系统管理员为你安装它,或者如果没有,obtain the source并且在你的主目录下构建并安装它。

一旦你解决这个问题,有一个期望命令调用spawn,它是区分大小写的; Spawn将不被识别。

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

+0

雅,我在shell的开始:“#!/ bin/csh”作为Shebang ...应该是一个问题吗? ya,看起来“没有安装Expect,那么如果我必须在SUnOS上创建一个脚本来调用远程登录(比如telnet),那怎么可能?你可以不用期望地为我重新构建它吗? – ErAB

+0

@Ashish:没有,shebang中的'!'没有调用历史记录机制,很难说出是什么,你应该能够安装'expect',我不明白你想做的事情足以建议一个替代方案,试着告诉我们你要完成的是什么,而不仅仅是你尝试过的那些方法没有起作用 –

+0

该脚本即将把10台机器的passwd从现有的passwd(所有机器都通用)更改为新的passwd(再次,应该是所有的机器相同) – ErAB

0

我在下面有一个工作脚本,你会得到错误,因为我相信你正在尝试使用sh或其他命令来运行脚本。尝试运行它为./script。我使用下面的示例脚本进行文件传输,但是我通过ssh来回交换了一次密钥交换,这是一次性活动。 ! #在/ usr/bin中/期望-f 设定的超时130 产卵SSH “[email protected]” 期望 “密码:” 发送 “通过@ 1234 \ R” 期望 “$” 发送“SH/home/nathalok/HTML/run.sh \ r“ expect”$“ send”exit \ r“

+0

忽略格式化,所有代码都在单行中 – user3754136