|
@@ -0,0 +1,70 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "bufio"
|
|
|
+ "bytes"
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "os"
|
|
|
+ "regexp"
|
|
|
+ "strings"
|
|
|
+
|
|
|
+ "golang.org/x/crypto/ssh"
|
|
|
+)
|
|
|
+
|
|
|
+func Connect(user, pass, host string, cmd string) bytes.Buffer {
|
|
|
+ cipher := ssh.Config{
|
|
|
+ Ciphers: []string{"aes128-cbc", "3des-cbc", "aes192-cbc", "aes256-cbc"},
|
|
|
+ }
|
|
|
+ config := &ssh.ClientConfig{
|
|
|
+ User: user,
|
|
|
+ Auth: []ssh.AuthMethod{
|
|
|
+ ssh.Password(pass),
|
|
|
+ },
|
|
|
+ HostKeyCallback: ssh.InsecureIgnoreHostKey(),
|
|
|
+ Config: cipher,
|
|
|
+ }
|
|
|
+ conn, err := ssh.Dial("tcp", host, config)
|
|
|
+ // time.Sleep(1)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal("Failed to dial: ", err)
|
|
|
+ }
|
|
|
+ sess, err := conn.NewSession()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal("Failed to create session: ", err)
|
|
|
+ }
|
|
|
+ stdin, err := sess.StdinPipe()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal("Failed to create session: ", err)
|
|
|
+ }
|
|
|
+ var bout bytes.Buffer
|
|
|
+ var berr bytes.Buffer
|
|
|
+ sess.Stdout = &bout
|
|
|
+ sess.Stderr = &berr
|
|
|
+ sess.Shell()
|
|
|
+ fmt.Fprintf(stdin, "%s\n", "terminal length 0")
|
|
|
+ fmt.Fprintf(stdin, "%s\n", cmd)
|
|
|
+ fmt.Fprintf(stdin, "\nexit\n")
|
|
|
+ fmt.Fprintf(stdin, "exit\n")
|
|
|
+ sess.Wait()
|
|
|
+ sess.Close()
|
|
|
+ // scanner := bufio.NewScanner(&bout)
|
|
|
+ // for scanner.Scan() {
|
|
|
+ // fmt.Println(scanner.Text())
|
|
|
+ // }
|
|
|
+ // fmt.Println(bout.String())
|
|
|
+ return bout
|
|
|
+}
|
|
|
+func main() {
|
|
|
+
|
|
|
+ result1 := Connect("rancid", "JDACy6wK*yW%meQ", os.Args[1], os.Args[2])
|
|
|
+ scanner := bufio.NewScanner(&result1)
|
|
|
+ for scanner.Scan() {
|
|
|
+ fmt.Println("Text: " + scanner.Text())
|
|
|
+ }
|
|
|
+}
|
|
|
+func IntStringParser(str string) []string {
|
|
|
+
|
|
|
+ re := regexp.MustCompile(`\s{1,}`)
|
|
|
+ return strings.Split(re.ReplaceAllString(str, ","), ",")
|
|
|
+}
|