⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssh_exec.tcl

📁 expect用于ssh自动登录后
💻 TCL
字号:
[root@auto4 ~]# cat ssh_exec.tcl
#!/usr/bin/tclsh
package req Expect
if {$argc<4} {
        send_user "usage: $argv0 host username password cmd "
        exit
        }
set timeout 5
proc do_ssh_login {host username pass cmds} {
    puts "$cmds"
    set timeout_case 0
    set done 1
 
    send_user "\n"
    spawn ssh $username@$host
    send_user "Connectting to $host\n"
    while {$done} {
 
     expect {
             timeout {
                  switch -- $timeout_case {
                 0 { send "\n" }
                 1 {
                      send_user "retry...\n"
                      send "\n"
                   }
                 2 {
                     puts stderr "Connection timeout...\n"
             close
             set done 0
             break
                   }
               }
               incr timeout_case
              }
 
        "*(yes/no)?" {send "yes\n"}       
        "?assword:"  {send "$pass\n"}
        "*Permission denied*" {    send_user "login error\n"
                    close
                    set done 0
                    break
                      }
           "*Connection refused*" { send_user "Connection refused\n"
                    close
                    set done 0
                    break
                       }
        "]$*" { send_user "\nlogin successful...\n"
                send "$cmds\n"
                expect "$"
                set done 0
                expect {
                "$" {set done 0
                     send_user "\n***************************************************************\n"
                     send_user "\n"
                     send "exit\n"
                   }
                }
              }
        "*#*" {
                send_user "\n*************************$host********************************\n"
                send "$cmds\n"
                expect "#"
                set done 0
                expect {
                "#" {set done 0
                     send_user "\n***************************************************************\n"
                     send_user "\n"
                     send "exit\n"
                   }
                }
          }
        }
    }
 
}


# read information from a file
#set f [open "pwd.txt" r]
#while { [gets $f line] >= 0 } {
#set su [lindex $line 3]
#set sp [lindex $line 4]
#if { [string length $su] <=0 } {
#    set sp "NULL"
#    set su "NULL"
#}
#set line [list 10.160.33.149 sliu hs123456 "cli add job file testcase1985"]
set line $argv
do_ssh_login [lindex $line 0] [lindex $line 1] [lindex $line 2] [lindex $line 3]
#}
 
#close $f

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -