在linux中telnet和打开命令提示符脚本

时间:2014-03-04 17:45:23

标签: linux ssh telnet expect

我没有任何重要的脚本编写经验,我对我正在处理的脚本感到困惑。

  1. 我在Linux中使用dynagen并创建了一个基本拓扑,其中包含两个路由器R1(fa0 / 0 = 10.1.1.1 /端口2101)和R2(fa0 / 0 = 10.1.1.2 /端口2102)。

  2. 我设法创建了一个python脚本并运行路由器,我可以启动和停止它们并打开控制台,我也可以从putty运行它们并执行相同的任务。

  3. 我需要一个脚本来自动telnet到我的Linux并提示我输入设备的用户名和密码/启动路由器/打开命令提示符/将当前运行的配置文件保存在文件夹/中。

    < / LI>

    这是我到目前为止执行的第三项任务,它远程登录到我的Linux,但没有提示我输入用户名和密码,它只是打印它们,我坚持使用其余的。

    #!/usr/bin/expect
    
    set timeout 20
    spawn telnet x.x.x.x
    expect "login:"
    expect "Username:"
    send "user\r"
    expect "Password:"
    send "pass\r";
    interact 
    

    感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我在这里要做的是使用expect命令的regexp模式,并等待&#34; login:&#34;或&#34;用户名:&#34;。如下所示:

#!/usr/bin/expect

set timeout 20
spawn telnet x.x.x.x
expect {
    -re "login:|Username:" {
        send "user\r"
        expect "*assword:"
        send "pass\r"; #After this you may want to expect an appropriate prompt (>, $, #, or whatever) prior to handing control over to user
        interact 
    }
    timeout {
        puts "Timed out while waiting for login prompt"
    }
}

让我知道这是怎么回事。