Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "bufio"
  5. "flag"
  6. "fmt"
  7. "golang.org/x/crypto/ssh"
  8. "io"
  9. "log"
  10. "os"
  11. )
  12.  
  13. var (
  14. user = flag.String("u", "lab_34_2018", "User name")
  15. pass = flag.String("pass", "0000", "User password")
  16. host = flag.String("h", "localhost", "Host")
  17. port = flag.Int("p", 2222, "Port")
  18. )
  19.  
  20.  
  21. func main() {
  22. flag.Parse()
  23.  
  24. //задаю конфиг
  25. config := &ssh.ClientConfig{
  26. User: *user,
  27. Auth: []ssh.AuthMethod{
  28. ssh.Password(*pass),
  29. },
  30. }
  31. config.HostKeyCallback = ssh.InsecureIgnoreHostKey()
  32.  
  33. //задаю адрес
  34. addr := fmt.Sprintf("%s:%d", *host, *port)
  35. client, err := ssh.Dial("tcp", addr, config)
  36. if err != nil {
  37. panic(err)
  38. }
  39.  
  40. //создаю сессию
  41. session, err := client.NewSession()
  42. if err != nil {
  43. panic(err)
  44. }
  45.  
  46. //настройка обмена сообщения
  47. modes := ssh.TerminalModes{
  48. ssh.ECHO: 0,
  49. ssh.IGNCR: 1,
  50. }
  51. stdin, err := session.StdinPipe()
  52. if err != nil {
  53. fmt.Errorf("Unable to setup stdin for session: %v", err)
  54. }
  55. go io.Copy(stdin, os.Stdin)
  56.  
  57. stdout, err := session.StdoutPipe()
  58. if err != nil {
  59. fmt.Errorf("Unable to setup stdout for session: %v", err)
  60. }
  61. go io.Copy(os.Stdout, stdout)
  62.  
  63. stderr, err := session.StderrPipe()
  64. if err != nil {
  65. fmt.Errorf("Unable to setup stderr for session: %v", err)
  66. }
  67. go io.Copy(os.Stderr, stderr)
  68.  
  69.  
  70. // Создаю вертуальный терминал для работы команд
  71. if err := session.RequestPty("xterm", 80, 40, modes); err != nil {
  72. log.Fatalf("request for pseudo terminal failed: %s", err)
  73. }
  74.  
  75. // Start remote shell
  76. if err := session.Shell(); err != nil {
  77. log.Fatalf("failed to start shell: %s", err)
  78. }
  79.  
  80. // Handle control + C
  81. //c := make(chan os.Signal, 1)
  82. //signal.Notify(c, os.Interrupt)
  83. //go func() {
  84. // for {
  85. // <-c
  86. // fmt.Println("^C")
  87. // fmt.Fprint(stdin, "\n")
  88. // //fmt.Fprint(in, '\t')
  89. // }
  90. //}()
  91.  
  92.  
  93.  
  94. // Считывание и передача команды
  95. for {
  96. reader := bufio.NewReader(os.Stdin)
  97. str, _ := reader.ReadString('\n')
  98. fmt.Fprint(stdin, str)
  99. }
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement