Skip to content
This repository has been archived by the owner on Feb 6, 2024. It is now read-only.

Latest commit

 

History

History
31 lines (24 loc) · 870 Bytes

README.md

File metadata and controls

31 lines (24 loc) · 870 Bytes

Get Running Configuration from Cisco IOS

This code works at best effort; therefore, the SSH client tries to connect to servers even with not recommended Kex and Ciphers:

DIAL:
	conn, err = ssh.Dial("tcp", addr, sshConfig)
	if err != nil {
		m := regexp.MustCompile(`server offered: \[(.*)\]`)

		errString := err.Error()
		if strings.Contains(errString, "key exchange") {
			sshConfig.Config.KeyExchanges = strings.Split(m.FindStringSubmatch(errString)[1], " ")
			goto DIAL
		}
		if strings.Contains(errString, "server cipher") {
			sshConfig.Config.Ciphers = strings.Split(m.FindStringSubmatch(errString)[1], " ")
			goto DIAL
		}
		return nil, err
	}

goto had proved very useful in this case because it reduced the amount of code to handle all these exceptions.

Usage:

./getrun -t {target} -P {port} -u {username} -p {password}