golang

时间:2018-02-17 08:44:58

标签: go ssh

我正在尝试使用 github.com/gliderlabs/ssh 包来构建ssh服务器。 这个例子工作得很好。 我连接时,下面的代码会听取并回复一些文字,然后关闭连接。

我想保持开放状态,听取用户输入(线条)并回应“你说:”......但我不知道该做什么,这似乎太简单了,无法在某处解释。< / p>

有人可以告诉我该做什么吗?

package main

import (
    "bufio"
    "fmt"
    "io"
    "log"

    "github.com/gliderlabs/ssh"
)

func main() {
    ssh.Handle(func(s ssh.Session) {

        io.WriteString(s, fmt.Sprintf("Hello %s\n", s.User()))
        io.WriteString(s, fmt.Sprintf("Hello 2%s\n", s.User()))
        io.WriteString(s, fmt.Sprintf("Hello 3%s\n", s.User()))     

        text,err:= bufio.NewReader(s).ReadString('\n')
        if err != nil  {
            panic("GetLines: " + err.Error())
        }

        io.WriteString(s, fmt.Sprintf("ton texte %s\n", text))   
    })

    log.Println("starting ssh server on port 2223...")
    log.Fatal(ssh.ListenAndServe(":2223", nil))
}

1 个答案:

答案 0 :(得分:1)

如果问题仍然存在,则应在处理程序内部使用for {}循环,并始终读取输入。顺便说一句,更适合使用“ golang.org/x/crypto/ssh/terminal”包。

这里有个小例子:

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.1'

gem 'rails', '~> 5.2.0'
gem 'sqlite3'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  gem 'capybara', '>= 2.15', '< 4.0'
  gem 'selenium-webdriver'
  gem 'chromedriver-helper'
end

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]