当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

gossh

Go的SSH开发包
授权协议 Apache
开发语言 Google Go
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 不详
投 递 者 东博瀚
操作系统 Windows
开源组织
适用人群 未知
 软件概览

gossh 是 Go 语言实现 SSH 通讯的开发包。

示例代码:

package main

import (
  "github.com/dynport/gossh"
  "log"
)

// returns a function of type gossh.Writer func(...interface{})
// MakeLogger just adds a prefix (DEBUG, INFO, ERROR)
func MakeLogger(prefix string) gossh.Writer {
  return func(args ...interface{}) {
    log.Println((append([]interface{}{prefix}, args...))...)
  }
}

func main() {
  client := gossh.New("some.host", "user")
  // my default agent authentication is used. use
  // client.SetPassword("<secret>")
  // for password authentication
  client.DebugWriter = MakeLogger("DEBUG")
  client.InfoWriter = MakeLogger("INFO ")
  client.ErrorWriter = MakeLogger("ERROR")

  defer client.Close()
  rsp, e := client.Execute("uptime")
  if e != nil {
    client.ErrorWriter(e.Error())
  }
  client.InfoWriter(rsp.String())

  rsp, e = client.Execute("echo -n $(cat /proc/loadavg); cat /does/not/exists")
  if e != nil {
    client.ErrorWriter(e.Error())
    client.ErrorWriter("STDOUT: " + rsp.Stdout())
    client.ErrorWriter("STDERR: " + rsp.Stderr())
  }
}

运行结果:

2013/08/25 00:31:40 DEBUG connecting some.host
2013/08/25 00:31:41 INFO  [EXEC  ] uptime
2013/08/25 00:31:41 DEBUG 22:31:41 up 375 days, 10:44,  0 users,  load average: 0.09, 0.13, 0.22
2013/08/25 00:31:41 INFO  => 0.944143
2013/08/25 00:31:41 INFO  map[stdout:72 bytes stderr:0 bytes runtime:0.944202 status:0]
2013/08/25 00:31:41 DEBUG already connected
2013/08/25 00:31:41 INFO  [EXEC  ] echo -n $(cat /proc/loadavg); cat /does/not/exists
2013/08/25 00:31:41 DEBUG 0.09 0.13 0.22 1/455 23396
2013/08/25 00:31:41 ERROR cat: /does/not/exists
2013/08/25 00:31:41 ERROR : No such file or directory
2013/08/25 00:31:41 INFO  => 0.067075
2013/08/25 00:31:41 ERROR Process exited with: 1. Reason was:  ()
2013/08/25 00:31:41 ERROR STDOUT: 0.09 0.13 0.22 1/455 23396
2013/08/25 00:31:41 ERROR STDERR: cat: /does/not/exists: No such file or directory
  • 开发或运维过程中频繁使用ssh,Mac也有一些ssh客户端,而我觉得还是终端下ssh比较好用,但无法保存密码,为了弥补它的不足 于是。。。 有了Gossh 什么是Gossh? Gossh是使用Go编写的远程登录客户端,可以一键登录远程服务器,它解决了终端下ssh无法保存密码的问题。使用Go语言编写的原因是它可以跨平台,并且用户无需安装运行环境,只需要一个终端它就能运行,Linux也可以使用。 下载

  • package main import ( "flag" "io" "log" "net" "os" "os/exec" "golang.org/x/crypto/ssh/terminal" "github.com/kr/pty" ) var ( addr = flag.String("addr", ":8080", "address") isserver = fl

  • 不BB直接看代码 package main import ( "fmt" gossh "golang.org/x/crypto/ssh" "net" ) // 连接信息 type Cli struct { user string pwd string addr string client *gossh.Client session

 相关资料
  • 我知道我可以使用非密码短语保护的密钥连接到远程,但我不是要求这样做,我想知道是否可以使用密码短语保护的密钥从VSCode连接到远程主机。

  • 本文向大家介绍JSP 开发SSH整合异常解决办法,包括了JSP 开发SSH整合异常解决办法的使用技巧和注意事项,需要的朋友参考一下 SSH整合异常解决(creating bean with name 'sessionFactory' defined in class path) 整合SSH注解的方式,但是一直有异常。还是解决了,贴出来。 看到这个异常,首先我以为我没导hibernate的相关包,所

  • 问题内容: 我有这两个容器,例如(CentOs)和。我想拥有的是,可以从容器中连接到mongo数据库,就像它在本地运行一样, 无论如何,据我所知,您可以像这样将端口localhost:27017映射到mongo:27017 但是,如果执行此操作,则必须提供root密码,然后它会将我登录到容器中,并且不会发生端口转发 背景:我想这样做是因为我正在运行一个Java程序,该程序连接到localhost上

  • 本文向大家介绍Java的web开发中SSH框架的协作处理应用笔记,包括了Java的web开发中SSH框架的协作处理应用笔记的使用技巧和注意事项,需要的朋友参考一下  相信SSH没人不知道了吧,struts2+spring+hibernate,企业开发的“基础”架构,为什么基础标上引号,因为这个基础只是很多人自以为的而已,最基础的是servlet,很多培训机构很多基础都不教,直接上来就三大框架了,S

  • 我希望能够远程连接到公开了JMX的Java服务,但它被防火墙阻止了。我尝试使用ssh本地端口转发,但是连接失败了。查看wireshark,当您试图与jconsole连接时,它似乎希望在连接到端口9999后通过一些短暂的端口进行连接,这些端口被防火墙阻止。 有没有什么方法可以让jconsole只通过9999连接或者使用代理?这篇文章还是最好的解决方案吗?或者,我是不是漏掉了什么?

  • 我在mac上生成一个ssh密钥对,并将公钥添加到我的ubuntu服务器(实际上,它是mac上的一个虚拟机),但当我尝试登录ubuntu服务器时,它会说: 我已经尝试了很多方法来解决这个问题,改变密钥文件模式,改变文件夹模式,就像stackoverflow上的一些答案一样,但是它不起作用。 密钥文件权限: 请给我一些想法========================================

  • 问题内容: Jenkins要求使用证书才能使用 ssh 发布和 ssh 命令。可以在下进行配置。 问题是:如何创建证书? 我有两台ubuntu服务器,一台运行Jenkins,一台用于运行应用程序。 我应该设置Jenkins证书并将其一部分放置在部署框中,还是将证书设置在部署框上并将其一部分放置在Jenkins上?证书是否需要使用名为Jenkins的用户名,或者可以用于任何用户?我们在开发箱上没有J

  • 但是现在要通过Java的JSch库来完成,怎么做呢?第一次尝试了portforwarding,但在终端上我没有这样做(没有在中设置参数)。 然后我遇到了一个问题,如何使用JSCH SSH到另一个SSH服务器后面的服务器?,但我不明白如何创建tcp隧道!