Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "github.com/gliderlabs/ssh"
- "golang.org/x/crypto/ssh/terminal"
- "io"
- "log"
- "os/exec"
- )
- func main() {
- server:="localhost:2222"
- ssh.Handle(func(s ssh.Session) {
- io.WriteString(s, fmt.Sprintf("Hello %s\n", s.User()))
- term := terminal.NewTerminal(s, "> ")
- for {
- line, err := term.ReadLine()
- if err != nil {
- break
- }
- if line =="dir"{
- out, err := exec.Command("cmd", "/C", "dir").Output()
- if err != nil {
- log.Fatal(err)
- }
- term.Write(append([]byte(out), '\n'))
- } else if line =="date" {
- out, err := exec.Command("cmd", "date").Output()
- if err != nil {
- log.Fatal(err)
- }
- term.Write(append([]byte(out), '\n'))
- } else if line =="server"{
- term.Write(append([]byte(server), '\n'))
- } else {
- term.Write(append([]byte("unknown command"), '\n'))
- }
- log.Println(line)
- }
- })
- log.Println("terminal closed")
- log.Println("starting ssh server on port 2222...")
- log.Fatal(ssh.ListenAndServe(":2222", nil))
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement