加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

telnet 用shell脚本实现远程操作实例

(2012-11-04 14:24:33)
标签:

it

分类: IT_Bolg

shell中的telnet命令  

(1)Test1

(sleep 2;echo "username";\
sleep 2;echo "password";\
sleep 2;echo "^M";
sleep 2;echo "tar xf filename&";\
sleep 2)|telnet yourIP

^M用ctrl + V +M
(2)Test2
如何用shell脚本实现自动telnet
2008-05-27 16:16

很多人认为telnet象passwd和su一样,无法通过管道和输入转向使其自动工作,但实际上telnet是支持输入转向的.虽然,严格的说,shell脚本无法使telnet进入交互状态,但它确实可你使你进入远程系统并运行你希望的命令后退出.这远比用rsh(remsh,rcmd)更令人放心,
使用如下的脚本可以达到你的要求:
(sleep 1;echo user;sleep 1; echo passwd;echo yourcmd ;sleep 1)|telnet remotehost
其中user,passwd,yourcmd,remotehost分别更换成你的用户名,用户口令,你想要运行的命令,远程机器名或IP便可以了. 如果要想使用脚本进入交互状态,可以使用expect.

如果你要通过telnet某个IP的端口来得到部分数据,则可以用以下命令

(sleep 5;) | telnet IP PORT 这样就可以在telnet后将PORT在5秒内输出的数据打印到屏幕上,然后自动退出

EG:
tempValue="KEY"
str4=`(sleep 1;echo AA;sleep 1; echo 123; sleep 1; echo tail -f /aa/log/a.log;sleep 1) | telnet ${IP} | grep ${tempValue}`
num4=`echo ${#str4}`
if [ ${num4} -eq 0 ];then
     echo "==::在a.log文件中没有找到关键字KEY,请检查!"
     sheet4="@NULL"
else
     echo "==::在a.log文件有找到关键字KEY!"
     sheet4="@OK"
fi

(3)Test3

shell脚本:自动FTP和TELNET

       因为OCS有几套系统,每次导数据都要在几套系统上做一遍,都是重复的工作,因些写一个脚本自己在几套系统上执行相关的命令。已经成功执行。

       程序中telnet and ftp 用到here document,这个要注意end limiter must start at left。

下面是脚本的主要框架:

#!/bin/bash
#don't use chinese character

#####################################################
define param
#####################################################

CONFIG_FILE="auto.cfg"
REMOTEHOST=""
USERNAME=""
PASSWD=""
SRC_DIR="userfile/llh/task"
DEST_DIR="userfile/llh/task"
COMMAND=$1
COMMAND_FILE=$2

#####################################################################
        function start
#####################################################################


#param:remoteHost,username,password,dir
function my_telnet
{
    REMOTE_HOST=$1
    USERNAME=$2
    PASSWORD=$3
    DEST_DIR=$4
    COMMAND=$5
    COMMAND_FILE=$6
   

    echo "start telnet ${REMOTE_HOST}......"
    #exec telnet
    (
        #login...
        sleep 1
        echo $USERNAME
        sleep 1
        echo $PASSWORD

        #exec your command
        #########command start##########
        sleep 2
        echo "cd $DEST_DIR"
        sleep 2
        echo "sh $COMMAND $COMMAND_FILE &"
        sleep 3
        #########command end############
     
        echo "exit"

    | telnet ${REMOTE_HOST}

    echo "exec finish......"
    echo "exit telnet ${REMOTE_HOST}......"
}

#ftp put command and file
function ftp_put
{
#put command and file
    REMOTEHOST=$1
    USERNAME=$2
    PASSWD=$3
    SRC_COMMAND=$5
    SRC_FILE=$6
    DEST_DIR=$4

#ip=
#user 

ftp -n $REMOTEHOST <<FTPEOF
    user $USERNAME $PASSWD
    binary
    prompt
    cd $DEST_DIR
    put $SRC_COMMAND
    put $SRC_FILE
    close
    bye
FTPEOF    #here must start at first column.
}

#ftp put file only
function ftp_put_file
{
#put command and file
    REMOTEHOST=$1
    USERNAME=$2
    PASSWD=$3
    SRC_FILE=$5
    DEST_DIR=$4

#ip=
#user 

ftp -n $REMOTEHOST <<FTPEOF
    user $USERNAME $PASSWD
    binary
    prompt
    cd $DEST_DIR
    put $SRC_FILE
    close
    bye
FTPEOF
}

function usage
{

    echo "Usage $0 [command] [file]"
    echo "Function:execute command at location and remote host like this:"
    echo "command file"
}

function test_input
{
     echo "welcome...."

}

##################################################
     function  end
##################################################

################################################################################
     main start
################################################################################

test_input

(4)Test4

thewintersun
#!/usr/bin/expect -f

set timeout 30
spawn telnet 127.0.0.1 4000
expect "command-line:"
sleep .3
interact
-----------------
ok,搞定,谢谢了:)
yangding58
####以下可以支持telnet多设备。

#!/bin/ksh

user=xxxx
passwd=xxxxxx
ipaddress[0]="xx.xx.xx.xx"
..
..
ipaddress[n]="xx.xx.xx.xx"

for I in ${ipaddress[@]}
do
{
    {
        sleep 1
        echo  "$user"
        sleep 1
        echo  "$passwd"
        sleep 1
        echo "cd /home"
        sleep 1
        echo  "mv test test.old;touch test.txt"
        sleep 1
        
   
    } | telnet "$I"
}
done

exit 0

转自[http://xiaohuabiao.blog.163.com/blog/static/1384821820104208379235/]

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有