12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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, ","), ",")
- }
|