本文整理匯總了Golang中github.com/moul/advanced-ssh-config/pkg/config.Config.GetGatewaySafe方法的典型用法代碼示例。如果您正苦於以下問題:Golang Config.GetGatewaySafe方法的具體用法?Golang Config.GetGatewaySafe怎麽用?Golang Config.GetGatewaySafe使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/moul/advanced-ssh-config/pkg/config.Config
的用法示例。
在下文中一共展示了Config.GetGatewaySafe方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: proxy
func proxy(host *config.Host, conf *config.Config, dryRun bool) error {
if len(host.Gateways) > 0 {
Logger.Debugf("Trying gateways: %s", host.Gateways)
for _, gateway := range host.Gateways {
if gateway == "direct" {
err := proxyDirect(host, dryRun)
if err != nil {
Logger.Errorf("Failed to use 'direct' connection: %v", err)
}
} else {
hostCopy := host.Clone()
gatewayHost := conf.GetGatewaySafe(gateway)
err := prepareHostControlPath(hostCopy, gatewayHost)
if err != nil {
return err
}
// FIXME: dynamically add "-v" flags
var command string
// FIXME: detect ssh client version and use netcat if too old
// for now, the workaround is to configure the ProxyCommand of the host to "nc %h %p"
if err = hostPrepare(hostCopy); err != nil {
return err
}
if hostCopy.ProxyCommand != "" {
command = "ssh %name -- " + hostCopy.ExpandString(hostCopy.ProxyCommand)
} else {
command = hostCopy.ExpandString("ssh -W %h:%p ") + "%name"
}
Logger.Debugf("Using gateway '%s': %s", gateway, command)
err = proxyCommand(gatewayHost, command, dryRun)
if err == nil {
return nil
}
Logger.Errorf("Cannot use gateway '%s': %v", gateway, err)
}
}
return fmt.Errorf("No such available gateway")
}
Logger.Debugf("Connecting without gateway")
return proxyDirect(host, dryRun)
}
示例2: proxy
func proxy(host *config.Host, conf *config.Config, dryRun bool) error {
if len(host.Gateways) > 0 {
Logger.Debugf("Trying gateways: %s", host.Gateways)
for _, gateway := range host.Gateways {
if gateway == "direct" {
err := proxyDirect(host, dryRun)
if err != nil {
Logger.Errorf("Failed to use 'direct' connection: %v", err)
}
} else {
hostCopy := host.Clone()
gatewayHost := conf.GetGatewaySafe(gateway)
err := prepareHostControlPath(hostCopy, gatewayHost)
if err != nil {
return err
}
if hostCopy.ProxyCommand == "" {
hostCopy.ProxyCommand = "nc %h %p"
}
// FIXME: dynamically add "-v" flags
if err = hostPrepare(hostCopy); err != nil {
return err
}
command := "ssh %name -- " + hostCopy.ExpandString(hostCopy.ProxyCommand)
Logger.Debugf("Using gateway '%s': %s", gateway, command)
err = proxyCommand(gatewayHost, command, dryRun)
if err == nil {
return nil
}
Logger.Errorf("Cannot use gateway '%s': %v", gateway, err)
}
}
return fmt.Errorf("No such available gateway")
}
Logger.Debugf("Connecting without gateway")
return proxyDirect(host, dryRun)
}
示例3: proxy
func proxy(host *config.Host, conf *config.Config) error {
if len(host.Gateways) > 0 {
logrus.Debugf("Trying gateways: %s", host.Gateways)
for _, gateway := range host.Gateways {
if gateway == "direct" {
err := proxyDirect(host)
if err != nil {
logrus.Errorf("Failed to use 'direct' connection")
}
} else {
gatewayHost := conf.GetGatewaySafe(gateway)
err := prepareHostControlPath(host, gatewayHost)
if err != nil {
return err
}
if host.ProxyCommand == "" {
host.ProxyCommand = "nc %h %p"
}
command := "ssh %name -- " + commandApplyHost(host.ProxyCommand, host)
logrus.Debugf("Using gateway '%s': %s", gateway, command)
err = proxyCommand(gatewayHost, command)
if err == nil {
return nil
}
logrus.Errorf("Cannot use gateway '%s': %v", gateway, err)
}
}
return fmt.Errorf("No such available gateway")
}
logrus.Debugf("Connecting without gateway")
return proxyDirect(host)
}