我曾经使用批处理脚本来创建可用作 socks5 代理的 SSH 隧道。今天,我想我会在 Go 中实现它,既是为了学习语言,又是为了消除在连接断开时我不断运行批处理脚本文件的需要。
现在,我如何做到这一点是使用plink。使用 plink 执行此操作的命令是:
plink -N -C -D 8888 -pw password username@example.com
这是我的 Go 代码:
package main
import (
"os"
"os/exec"
"log"
)
func runPlink() {
command := exec.Command("plink.exe", "-N", "-C", "-D", "8888", "-pw", "password", "username@example.com")
if output, err := command.CombinedOutput(); err != nil {
log.Println(string(output), err.Error())
runPlink()
}
}
func main() {
if _, err := os.Stat("plink.exe"); os.IsNotExist(err) {
log.Fatalln("Cannot find plink.exe. Please copy it next to this application.")
}
runPlink()
}
我想让这个应用程序自包含,这样它就不会依赖于 的存在plink.exe来工作。
有没有办法在 Go 中实现这一目标?
繁花不似锦
相关分类