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

默认分类    2008-12-25 20:37   阅读47   评论1  
字号:    

       因为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 <    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 <    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

你可能感兴趣的:(Linux,shell,command,file,function,脚本,user)