请问如何写telnet的shell

请问如何写telnet的shell

先说一下,我很菜~~~


在bash下直接telnet 可以成功,可是写到shell里,就死活不成功!!请大家指点
就是最简单的:#!/bin/sh
telnet -l administrator 192.0.0.2<<!
5634119


Trying 192.0.0.2...
Connected to ZOUXIN (192.0.0.2).
Escape character is '^]'.
Connection closed by foreign host

登陆的是xp      
我不能解决你的问题

我问一下
5634119  是管理员的密码吗?      
是管理员的密码~~~
多谢大家了!      
这不成了明文传输了

建议用ssh      
用expect可以解决你的问题。      
我是想实现一个将网站的数据库自动tar包然后发到我机器上的自动备份功能。

本来最好的方法是rsh rcp,可是因为那个网站直接挂在外网上,而我在公司局域网内可以ftp ,telnet ,但是不能使用远程命令,所以我想写个shell先telnet过去,tar包,然后再ftp到我自己机器上(够麻烦吧~)可是telnet的shell总写不好,ftp轻松实现

所以想拜托大家一下!      
ssh,scp,sftp      
我也要实要相似的工作。的确,ssh, scp是比较理想的。但如果在LAN中的机器没有配置的话,就无法使用。由於某些原因,我的所面对的LAN上只能telnet,我就只好求助於expect了。在网上可以找到很多关於expect的资料。

我来给个简单的例如说明如何直接在script中给出username 和 password

#!/user/bin/expect -f

set user [lindex $argv 0]       # 从参数中读取用户名
set password [lindex $argv 1]   # 从参数中读取密码(也可直接写出)
spawn telnet a.b.c.d            # 用spawn调用telnet
expect login:                   # 等待login:提示符出现
send -- "$user\r"               # 用命令输入用户名
expect password:                # 等待password:提示符出现
send -- "$password\r"           # 用命令输入密码
expect eof                      # 等待结束符

注意send中有个\r是表示用户输入的return. 由於没有资料,以上代码只凭记忆写出。

如果要在登录后继续进行一些操作,可以用send发送
例如,
send -- "ls\r"
如果你的操作要跟用户交互的,记住加expect语句      
#!/usr/bin/expect --
spawn /usr/bin/telnet 127.0.0.1
expect "login:"
send "mysql\r"
expect "assword:"
send "mysql\r"
interact//这句话是把控制权交给用户,如果去处这句话,脚本会执行失败!


用这个脚本可以登陆,可是发送命令的时候出问题~~命令不能发送,用
expect “bash-2.04$”
send “ls\r”
希望大家能试一下,谢谢~~~      
没有在最后expect eof
呵呵~