本文整理汇总了Golang中github.com/coreos/fleet/ssh.SSHForwardingClient类的典型用法代码示例。如果您正苦于以下问题:Golang SSHForwardingClient类的具体用法?Golang SSHForwardingClient怎么用?Golang SSHForwardingClient使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SSHForwardingClient类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: runSSH
func runSSH(args []string) (exit int) {
if flagUnit != "" && flagMachine != "" {
fmt.Fprintln(os.Stderr, "Both machine and unit flags provided, please specify only one.")
return 1
}
var err error
var addr string
switch {
case flagMachine != "":
addr, _ = findAddressInMachineList(flagMachine)
case flagUnit != "":
addr, _ = findAddressInRunningUnits(flagUnit)
default:
addr, err = globalMachineLookup(args)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return 1
}
// trim machine/unit name from args
if len(args) > 0 {
args = args[1:]
}
}
if addr == "" {
fmt.Fprintln(os.Stderr, "Requested machine could not be found.")
return 1
}
args = pkg.TrimToDashes(args)
var sshClient *ssh.SSHForwardingClient
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), flagSSHAgentForwarding)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), flagSSHAgentForwarding)
}
if err != nil {
fmt.Fprintf(os.Stderr, "Failed building SSH client: %v\n", err)
return 1
}
defer sshClient.Close()
if len(args) > 0 {
cmd := strings.Join(args, " ")
err, exit = ssh.Execute(sshClient, cmd)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed running command over SSH: %v\n", err)
}
} else {
if err := ssh.Shell(sshClient); err != nil {
fmt.Fprintf(os.Stderr, "Failed opening shell over SSH: %v\n", err)
exit = 1
}
}
return
}
示例2: printUnitStatus
func printUnitStatus(c *cli.Context, jobName string) {
js := registryCtl.GetJobState(jobName)
if js == nil {
fmt.Printf("%s does not appear to be running\n", jobName)
syscall.Exit(1)
}
addr := fmt.Sprintf("%s:22", js.MachineState.PublicIP)
var err error
var sshClient *ssh.SSHForwardingClient
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), false)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), false)
}
if err != nil {
log.Fatal(err.Error())
}
defer sshClient.Close()
cmd := fmt.Sprintf("systemctl status -l %s", jobName)
channel, err := ssh.Execute(sshClient, cmd)
if err != nil {
log.Fatalf("Unable to execute command over SSH: %s", err.Error())
}
readSSHChannel(channel)
}
示例3: sshAction
func sshAction(c *cli.Context) {
unit := c.String("unit")
machine := c.String("machine")
if unit != "" && machine != "" {
log.Fatal("Both flags, machine and unit provided, please specify only one")
}
args := c.Args()
var err error
var addr string
switch {
case machine != "":
addr, _ = findAddressInMachineList(machine)
case unit != "":
addr, _ = findAddressInRunningUnits(unit)
default:
addr, err = globalMachineLookup(args)
args = args[1:]
}
if err != nil {
log.Fatal(err)
}
if addr == "" {
log.Fatalf("Requested machine could not be found")
}
agentForwarding := c.Bool("agent")
var sshClient *ssh.SSHForwardingClient
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), agentForwarding)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), agentForwarding)
}
if err != nil {
log.Fatal(err.Error())
return
}
defer sshClient.Close()
if len(args) > 0 {
cmd := strings.Join(args, " ")
channel, err := ssh.Execute(sshClient, cmd)
if err != nil {
log.Fatalf("Unable to run command over SSH: %s", err.Error())
}
readSSHChannel(channel)
} else {
if err := ssh.Shell(sshClient); err != nil {
log.Fatalf(err.Error())
}
}
}
示例4: runRemoteCommand
// runRemoteCommand runs the given command over SSH on the given IP, and returns
// any error encountered and the exit status of the command
func runRemoteCommand(cmd string, addr string) (err error, exit int) {
var sshClient *ssh.SSHForwardingClient
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), false)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), false)
}
if err != nil {
return err, -1
}
defer sshClient.Close()
return ssh.Execute(sshClient, cmd)
}
示例5: runRemoteCommand
// runRemoteCommand runs the given command over SSH on the given IP, and returns
// any error encountered and the exit status of the command
func runRemoteCommand(cmd string, addr string, timeout time.Duration) (exit int, err error) {
var sshClient *ssh.SSHForwardingClient
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), false, timeout)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), false, timeout)
}
if err != nil {
return -1, err
}
defer sshClient.Close()
err, exit = ssh.Execute(sshClient, cmd)
return
}
示例6: runRemoteCommand
// runRemoteCommand runs the given command over SSH on the given IP, and returns
// any error encountered and the exit status of the command
func runRemoteCommand(cmd string, addr string) (err error, exit int) {
var sshClient *ssh.SSHForwardingClient
timeout := getSSHTimeoutFlag()
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient(globalFlags.SSHUserName, tun, addr, getChecker(), false, timeout)
} else {
sshClient, err = ssh.NewSSHClient(globalFlags.SSHUserName, addr, getChecker(), false, timeout)
}
if err != nil {
return err, -1
}
defer sshClient.Close()
return ssh.Execute(sshClient, cmd)
}
示例7: SSH
// SSH opens an interactive shell to a machine in the cluster
func (c *FleetClient) SSH(name string) (err error) {
var sshClient *ssh.SSHForwardingClient
timeout := time.Duration(Flags.SSHTimeout*1000) * time.Millisecond
ms, err := c.machineState(name)
if err != nil {
return err
}
// If name isn't a machine ID, try it as a unit instead
if ms == nil {
units, err := c.Units(name)
if err != nil {
return err
}
machID, err := c.findUnit(units[0])
if err != nil {
return err
}
ms, err = c.machineState(machID)
if err != nil || ms == nil {
return err
}
}
addr := ms.PublicIP
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), false, timeout)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), false, timeout)
}
if err != nil {
return err
}
defer sshClient.Close()
err = ssh.Shell(sshClient)
return err
}
示例8: runRemoteCommand
// runRemoteCommand runs the given command over SSH on the given IP, and returns
// any error encountered and the exit status of the command
func runRemoteCommand(cCmd *cobra.Command, addr string, cmd string, args ...string) (err error, exit int) {
var sshClient *ssh.SSHForwardingClient
timeout := getSSHTimeoutFlag(cCmd)
if tun := getTunnelFlag(cCmd); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient(globalFlags.SSHUserName, tun, addr, getChecker(cCmd), false, timeout)
} else {
sshClient, err = ssh.NewSSHClient(globalFlags.SSHUserName, addr, getChecker(cCmd), false, timeout)
}
if err != nil {
return err, -1
}
cmdargs := cmd
for _, arg := range args {
cmdargs += fmt.Sprintf(" %q", arg)
}
defer sshClient.Close()
return ssh.Execute(sshClient, cmdargs)
}
示例9: runRemoteCommand
func runRemoteCommand(cmd string, ip string) (*ssh.Channel, error) {
addr := fmt.Sprintf("%s:22", ip)
var sshClient *ssh.SSHForwardingClient
var err error
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient("core", tun, addr, getChecker(), false)
} else {
sshClient, err = ssh.NewSSHClient("core", addr, getChecker(), false)
}
if err != nil {
return nil, err
}
defer sshClient.Close()
channel, err := ssh.Execute(sshClient, cmd)
if err != nil {
return nil, err
}
return channel, nil
}
示例10: runSSH
func runSSH(args []string) (exit int) {
if flagUnit != "" && flagMachine != "" {
stderr("Both machine and unit flags provided, please specify only one.")
return 1
}
var err error
var addr string
switch {
case flagMachine != "":
addr, _, err = findAddressInMachineList(flagMachine)
case flagUnit != "":
addr, _, err = findAddressInRunningUnits(flagUnit)
default:
addr, err = globalMachineLookup(args)
// trim machine/unit name from args
if len(args) > 0 {
args = args[1:]
}
}
if err != nil {
stderr("Unable to proceed: %v", err)
return 1
}
if addr == "" {
stderr("Could not determine address of machine.")
return 1
}
args = pkg.TrimToDashes(args)
var sshClient *ssh.SSHForwardingClient
timeout := getSSHTimeoutFlag()
if tun := getTunnelFlag(); tun != "" {
sshClient, err = ssh.NewTunnelledSSHClient(globalFlags.SSHUserName, tun, addr, getChecker(), flagSSHAgentForwarding, timeout)
} else {
sshClient, err = ssh.NewSSHClient(globalFlags.SSHUserName, addr, getChecker(), flagSSHAgentForwarding, timeout)
}
if err != nil {
stderr("Failed building SSH client: %v", err)
return 1
}
defer sshClient.Close()
if len(args) > 0 {
cmd := strings.Join(args, " ")
err, exit = ssh.Execute(sshClient, cmd)
if err != nil {
stderr("Failed running command over SSH: %v", err)
}
} else {
if err := ssh.Shell(sshClient); err != nil {
stderr("Failed opening shell over SSH: %v", err)
exit = 1
}
}
return
}