我正在尝试使用 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))
}
答案 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]