1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/scottkiss-gosshtool

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md
# gosshtool

Библиотека инструментов SSH для Go
gosshtool предоставляет несколько полезных функций для SSH-клиента в golang. Реализовано с использованием golang.org/x/crypto/ssh.

## Поддерживает:
* выполнение команд на нескольких серверах;
* перенаправление локального порта через SSH-туннель;
* аутентификацию по SSH с использованием закрытых ключей или пароля;
* поддержку тайм-аута сеанса SSH;
* загрузку файлов через SSH.

## Установка
```bash
go get -u github.com/scottkiss/gosshtool

Примеры

Выполнение команды на одном сервере

import "github.com/scottkiss/gosshtool"

sshconfig := &gosshtool.SSHClientConfig{
    User:     "user",
    Password: "pwd",
    Host:     "11.11.22.22",
}
sshclient := gosshtool.NewSSHClient(sshconfig)
t.Log(sshclient.Host)
stdout, stderr,session, err := sshclient.Cmd("pwd",nil,nil,0)
if err != nil {
    t.Error(err)
}
t.Log(stdout)
t.Log(stderr)

Выполнение команд на нескольких серверах

import "github.com/scottkiss/gosshtool"

config := &gosshtool.SSHClientConfig{
    User:     "sam",
    Password: "123456",
    Host:     "serverA", //ip:port
}
gosshtool.NewSSHClient(config)

config2 := &gosshtool.SSHClientConfig{
    User:     "sirk",
    Privatekey: "sshprivatekey",
    Host:     "serverB",
}
gosshtool.NewSSHClient(config2)
stdout, _,_, err := gosshtool.ExecuteCmd("pwd", "serverA")
if err != nil {
    t.Error(err)
}
t.Log(stdout)

stdout, _,_, err = gosshtool.ExecuteCmd("pwd", "serverB")
if err != nil {
    t.Error(err)
}
t.Log(stdout)

Перенаправление порта через SSH-туннель

package main

import (
    _ "github.com/go-sql-driver/mysql"
    "github.com/scottkiss/gomagic/dbmagic"
    "github.com/scottkiss/gosshtool"
    //"io/ioutil"
    "log"
)

func dbop() {
    ds := new(dbmagic.DataSource)
    ds.Charset = "utf8"
    ds.Host = "127.0.0.1"
    ds.Port = 9999
    ds.DatabaseName = "test"
    ds.User = "root"
    ds.Password = "password"
    dbm, err := dbmagic.Open("mysql", ds)
    if err != nil {
        log.Fatal(err)
    }
    row := dbm.Db.QueryRow("select name from provinces where id=?", 1)
    var name string
    err = row.Scan(&name)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(name)
    dbm.Close()
}

func main() {
    server := new(gosshtool.LocalForwardServer)
    server.LocalBindAddress = ":9999"
    server.RemoteAddress = "remote.com:3306"
    server.SshServerAddress = "112.224.38.111"
    server.SshUserPassword = "passwd"
    //buf, _ := ioutil.ReadFile("/your/home/path/.ssh/id_rsa")
    //server.SshPrivateKey = string(buf)
    server.SshUserName = "sirk"
    server.Start(dbop)
    defer server.Stop()
}

Дополнительные примеры

  • sshcmd — простой клиент командной строки SSH.
  • gooverssh — сервер перенаправления портов через SSH.

Лицензия

Просмотрите файл LICENSE.


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

gosshtool предоставляет несколько полезных функций для SSH-клиента в Golang. Реализовано с использованием golang.org/x/crypto/ssh. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/scottkiss-gosshtool.git
git@api.gitlife.ru:oschina-mirror/scottkiss-gosshtool.git
oschina-mirror
scottkiss-gosshtool
scottkiss-gosshtool
master