LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1323|回复: 10

rsh后想exit,怎么在脚本里写

[复制链接]
发表于 2006-3-5 12:12:23 | 显示全部楼层 |阅读模式
rsh node4
干了一些事情后
exit (此时重新回到原来的节点)

怎么在脚本里写?
发表于 2006-3-5 21:17:10 | 显示全部楼层
in my distro, rsh is a link to ssh, so not sure what the cmd syntax would be, but if you are prompted for password, then you need a wordaround, most likely would be the expect language.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-7 14:32:28 | 显示全部楼层
嗯,ssh也同理
我的意思是,ssh后,想logout或exit回来到原来的机器。怎么在脚本里写,因为exit在sh里也是关键词


Post by yongjian
in my distro, rsh is a link to ssh, so not sure what the cmd syntax would be, but if you are prompted for password, then you need a wordaround, most likely would be the expect language.
回复 支持 反对

使用道具 举报

发表于 2006-3-7 17:30:10 | 显示全部楼层
嗯,我也有相同的问题、、
回复 支持 反对

使用道具 举报

发表于 2006-3-8 00:26:41 | 显示全部楼层
  1. ssh user@server <<EOF
  2. cmds
  3. ...
  4. exit
  5. EOF
复制代码
这里有个问题就是login的password。如果要bypass这个过程,就得配置一下ssh,将你的pub key放到ssh服务器的authoried_key中去,不然此法不通。因为passwd命令不接受非tty设备的输入。
回复 支持 反对

使用道具 举报

发表于 2006-3-8 10:32:40 | 显示全部楼层
也可以用expect提供password。另外,用ssh执行完命令,自然就回到原来的主机了呀
回复 支持 反对

使用道具 举报

发表于 2006-3-8 10:50:58 | 显示全部楼层
怎么用expect提供password,我早就听说这个了,可一直不太清楚。
回复 支持 反对

使用道具 举报

发表于 2006-3-8 11:01:35 | 显示全部楼层
你可以用autoexpect先运行一个ssh,这会生成一个script.exp,查看这个文件,大致的流程都在这里。我也只是在写python脚本时用到一个pexpect模块,过程大致也是这样:
spawn $COMMAND(ssh ...)
expect -re ".*password: " # 期望的字符串
send "$PASSWORD\n"  # 不知道有没有sendline,这样就不需要\n
expect eof  # 结束,就会执行命令
其原理就是调用一个子程序,当期望的串出现时,向其tty发送一个相应的串。

具体可以参考man了  :-)
回复 支持 反对

使用道具 举报

发表于 2006-3-10 14:56:38 | 显示全部楼层
感谢版主,ssh的问题解决,但现在又有个问题,用awk老是语法错误...

  1. #!/bin/sh
  2. for((i=1;i<=9;i++))
  3. do
  4. echo "loginto $i"
  5. ssh "cluster$i" <<EOF
  6. ps -A | awk '{if($4 ~/httpd/) print $1}'
  7. exit
  8. EOF
  9. done
  10. exit 0
复制代码

运行后结果

  1. loginto 1
  2. Pseudo-terminal will not be allocated because stdin is not a terminal.
  3. awk: cmd. line:1: {if( ~/httpd/) print }
  4. awk: cmd. line:1:      ^ syntax error
  5. TERM environment variable not set.
  6. 。。。
复制代码

不知为何,单独运行命令没问题啊,还请不吝赐教
回复 支持 反对

使用道具 举报

发表于 2006-3-10 20:18:18 | 显示全部楼层
you probably have to put a "\" before "$" to esc the special meaning.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表