使用 WinSCP 的時候,只要按下那個鍵,預設就會用 putty 登入這台 server。
來自 WinSCP 官網 |
也可以改用 Window Terminal,這樣一個 site 用一個 tab,省事很多。
我不確定哪一個版本開始的 Windows Terminal 可以這用開 tab,我用的是 Windows Terminal Preview 1.8.1032.0。
挑戰在於,大家明明都知道不應該存密碼,但都還是這樣做了,既然都已經存了,密碼當然要自動填入,否則不就白存了。
所以我用 Expect 自動輸入密碼。
但是安裝 Windows 版本的 Expect,似乎有點麻煩,所以就裝在 WSL 裡面的 Alpine, 一樣可以從 Windows 去執行。
所以概念就是這樣子:
wt.exe -M nt --title "title" wsl.exe --exec expect login.tcl 192.168.1.1 username password
但是 wt.exe 其實並不存在,直接閉著眼睛執行無妨,但 WinSCP 偏偏要去檢查它在不在,所以改這樣:
c:\windows\system32\cmd.exe /c start wt.exe ...
將 IP、使用者名稱等,改成 WinSCP 的樣板:
c:\windows\system32\cmd.exe /c start wt.exe -M nt --title "!N" wsl --exec /usr/bin/expect /root/login.tcl "!@" "!U" "!P" "!#" "!/"
login.tcl 會因為每個人的環境和需求不同,最基本大概是這樣:
#!/usr/bin/expect -f
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set port [lindex $argv 3]
set dir [lindex $argv 4]
set ::env(TERM) xterm
set prompt "#|$|]"
spawn ssh $user@$ip -p $port
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" {
send "$password\r"
}
default {
puts "don't know what to do."
exit
}
}
expect -re $prompt
send "cd $dir\r"
interact
這種東西不能叫創作,要用就直接拿去用;如果有用到 SSH tunnel 的話,只要在 WinSCP 設定好 tunnel 即可,這邊不用額外考慮。
WinSCP 要在哪邊設定....
然後,你就可以一直開、一直開...
如果有問題,將 cmd /c 改成 cmd /k,就可以看到錯誤訊息了。
沒有留言:
張貼留言