本文整理匯總了Golang中github.com/moul/advanced-ssh-config/pkg/config.Host.HostName方法的典型用法代碼示例。如果您正苦於以下問題:Golang Host.HostName方法的具體用法?Golang Host.HostName怎麽用?Golang Host.HostName使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/moul/advanced-ssh-config/pkg/config.Host
的用法示例。
在下文中一共展示了Host.HostName方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: proxyGo
func proxyGo(host *config.Host) error {
if host.HostName == "" {
host.HostName = host.Name()
}
if len(host.ResolveNameservers) > 0 {
Logger.Debugf("Resolving host: '%s' using nameservers %s", host.HostName, host.ResolveNameservers)
// FIXME: resolve using custom dns server
results, err := net.LookupAddr(host.HostName)
if err != nil {
return err
}
if len(results) > 0 {
host.HostName = results[0]
}
Logger.Debugf("Resolved host is: %s", host.HostName)
}
if host.ResolveCommand != "" {
command := commandApplyHost(host.ResolveCommand, host)
Logger.Debugf("Resolving host: %q using command: %q", host.HostName, command)
args, err := shlex.Split(command)
if err != nil {
return err
}
out, err := exec.Command(args[0], args[1:]...).Output()
if err != nil {
return err
}
host.HostName = strings.TrimSpace(fmt.Sprintf("%s", out))
Logger.Debugf("Resolved host is: %s", host.HostName)
}
Logger.Debugf("Connecting to %s:%d", host.HostName, host.Port)
conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", host.HostName, host.Port))
if err != nil {
return err
}
defer conn.Close()
Logger.Debugf("Connected to %s:%d", host.HostName, host.Port)
// Create Stdio pipes
c1 := readAndWrite(conn, os.Stdout)
c2 := readAndWrite(os.Stdin, conn)
select {
case err = <-c1:
case err = <-c2:
}
if err != nil {
return err
}
return nil
}
示例2: hostPrepare
func hostPrepare(host *config.Host) error {
if host.HostName == "" {
host.HostName = host.Name()
}
if len(host.ResolveNameservers) > 0 {
Logger.Debugf("Resolving host: '%s' using nameservers %s", host.HostName, host.ResolveNameservers)
// FIXME: resolve using custom dns server
results, err := net.LookupAddr(host.HostName)
if err != nil {
return err
}
if len(results) > 0 {
host.HostName = results[0]
}
Logger.Debugf("Resolved host is: %s", host.HostName)
}
if host.ResolveCommand != "" {
command := host.ExpandString(host.ResolveCommand)
Logger.Debugf("Resolving host: %q using command: %q", host.HostName, command)
args, err := shlex.Split(command)
if err != nil {
return err
}
cmd := exec.Command(args[0], args[1:]...)
var stdout bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &stdout
cmd.Stderr = &stderr
if err := cmd.Run(); err != nil {
Logger.Errorf("ResolveCommand failed: %s", stderr.String())
return err
}
host.HostName = strings.TrimSpace(fmt.Sprintf("%s", stdout.String()))
Logger.Debugf("Resolved host is: %s", host.HostName)
}
return nil
}
示例3: hostPrepare
func hostPrepare(host *config.Host) error {
if host.HostName == "" {
host.HostName = host.Name()
}
if len(host.ResolveNameservers) > 0 {
Logger.Debugf("Resolving host: '%s' using nameservers %s", host.HostName, host.ResolveNameservers)
// FIXME: resolve using custom dns server
results, err := net.LookupAddr(host.HostName)
if err != nil {
return err
}
if len(results) > 0 {
host.HostName = results[0]
}
Logger.Debugf("Resolved host is: %s", host.HostName)
}
if host.ResolveCommand != "" {
command := host.ExpandString(host.ResolveCommand)
Logger.Debugf("Resolving host: %q using command: %q", host.HostName, command)
args, err := shlex.Split(command)
if err != nil {
return err
}
out, err := exec.Command(args[0], args[1:]...).Output()
if err != nil {
return err
}
host.HostName = strings.TrimSpace(fmt.Sprintf("%s", out))
Logger.Debugf("Resolved host is: %s", host.HostName)
}
return nil
}