main.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. "bufio"
  4. "bytes"
  5. "fmt"
  6. "log"
  7. "os"
  8. "regexp"
  9. "strings"
  10. "golang.org/x/crypto/ssh"
  11. )
  12. func Connect(user, pass, host string, cmd string) bytes.Buffer {
  13. cipher := ssh.Config{
  14. Ciphers: []string{"aes128-cbc", "3des-cbc", "aes192-cbc", "aes256-cbc"},
  15. }
  16. config := &ssh.ClientConfig{
  17. User: user,
  18. Auth: []ssh.AuthMethod{
  19. ssh.Password(pass),
  20. },
  21. HostKeyCallback: ssh.InsecureIgnoreHostKey(),
  22. Config: cipher,
  23. }
  24. conn, err := ssh.Dial("tcp", host, config)
  25. // time.Sleep(1)
  26. if err != nil {
  27. log.Fatal("Failed to dial: ", err)
  28. }
  29. sess, err := conn.NewSession()
  30. if err != nil {
  31. log.Fatal("Failed to create session: ", err)
  32. }
  33. stdin, err := sess.StdinPipe()
  34. if err != nil {
  35. log.Fatal("Failed to create session: ", err)
  36. }
  37. var bout bytes.Buffer
  38. var berr bytes.Buffer
  39. sess.Stdout = &bout
  40. sess.Stderr = &berr
  41. sess.Shell()
  42. fmt.Fprintf(stdin, "%s\n", "terminal length 0")
  43. fmt.Fprintf(stdin, "%s\n", cmd)
  44. fmt.Fprintf(stdin, "\nexit\n")
  45. fmt.Fprintf(stdin, "exit\n")
  46. sess.Wait()
  47. sess.Close()
  48. // scanner := bufio.NewScanner(&bout)
  49. // for scanner.Scan() {
  50. // fmt.Println(scanner.Text())
  51. // }
  52. // fmt.Println(bout.String())
  53. return bout
  54. }
  55. func main() {
  56. result1 := Connect("rancid", "JDACy6wK*yW%meQ", os.Args[1], os.Args[2])
  57. scanner := bufio.NewScanner(&result1)
  58. for scanner.Scan() {
  59. fmt.Println("Text: " + scanner.Text())
  60. }
  61. }
  62. func IntStringParser(str string) []string {
  63. re := regexp.MustCompile(`\s{1,}`)
  64. return strings.Split(re.ReplaceAllString(str, ","), ",")
  65. }