golang ssh 远程执行命令(有一些命令会报command not found)
func sshSession(user, password, host string, port int) (sshSession *ssh.Session, err error) { //参数: 远程服务器用户名, 密码, ip, 端口
   sshClient, err := connector(user, password, host, port) //连接ssh
   if err != nil {
      fmt.Println("连接ssh失败", err)
      return
   }
   if sshSession, err = sshClient.NewSession(); err != nil { //创建客户端
      fmt.Println("创建客户端失败", err)
      return
   }
   return
}
func connector(user, password, host string, port int) (sshClient *ssh.Client, err error) {
   auth := make([]ssh.AuthMethod, 0)
   auth = append(auth, ssh.Password(password))
   clientConfig := &ssh.ClientConfig{
      User:    user,
      Auth:    auth,
      Timeout: 30 * time.Second,
      HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
         return nil
      },
   }
   addr := host + ":" + strconv.Itoa(port)
   sshClient, err = ssh.Dial("tcp", addr, clientConfig) //连接ssh
   if err != nil {
      fmt.Println("连接ssh失败", err)
      return
   }
   return
}
func main() {
   //session, err := go_utils.SshSession("root", "ubZFVU9RSKcTuTZe", "47.107.94.236", 22)
   session, err := go_utils.SshSession("root", "Xu765529", "47.92.199.4", 22)
   if err != nil {
      log.Fatal(err)
   }
   defer session.Close()
   session.Stdout = os.Stdout
   session.Stderr = os.Stderr
   session.Stdin = os.Stdin
   err = session.Run("/usr/local/start.sh") //脚本路径
   if err != nil {
      fmt.Println(err)
   }
}
看一下脚本内容:

在服务器上直接运行脚本:

hello world 和 2个java的版本号, 然而程序运行的实际情况:

有一个java命令报command not found, 是因为ssh在连接远程的环境变量中不包含可执行文件的路径, 所以要自己加上路径
golang ssh 远程执行命令(有一些命令会报command not found)的更多相关文章
- 利用scp 远程上传下载文件/文件夹和ssh远程执行命令
		
利用scp传输文件 1.从服务器下载文件scp username@servername:/path/filename /tmp/local_destination例如scp codinglog@192 ...
 - 使用ssh远程执行命令批量导出数据库到本地
		
前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,1 ...
 - 使用ssh远程执行命令批量导出数据库到本地(转)
		
前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,1 ...
 - linux利用ssh远程执行多台机器执行同样的命令
		
这篇文章主要介绍了ssh远程执行命令方法和Shell脚本实例,本文讲解了ssh执行远程操作方法和远程执行命令shell脚本示例,需要的朋友可以参考下 ssh执行远程操作命令格式代码如下: ssh -t ...
 - 解决SSH远程执行命令找不到环境变量的问题
		
通过SSH执行远程主机的命令或脚本时,经常会出现找不到自定义环境变量的问题.但是,如果通过SSH登录远程主机,然后再执行相同的命令或脚本,那么此时执行又是成功的.两种相似的方法,得到的结果却截然不同, ...
 - 网络编程 - 1.简单的套接字通信/2.加上通信循环/3.bug修复/4.加上链接循环/5.模拟ssh远程执行命令
		
1.简单的套接字通信 服务端 ''' 服务端 接电话 客户端 打电话 1.先启动服务端 2.服务端有两种套接字 1.phone 用来干接收链接的 2.conn 用来干收发消息的 ''' import ...
 - ssh远程执行命令使用明文密码
		
经过不懈的搜索终于找到ssh远程执行命令使用明文密码使用sshpass. 例子: sshpass -p "sequoiadb" ssh root@localhost "l ...
 - SSH远程执行命令环境变量问题
		
SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...
 - 模拟ssh远程执行命令,粘包问题,基于socketserver实现并发的socket
		
06.27自我总结 1.模拟ssh远程执行命令 利用套接字编来进行远程执行命令 服务端 from socket import * import subprocess server = socket(A ...
 
随机推荐
- Qt布局
			
常用的布局方法 1. 水平布局类 QHBoxLayout 2. 垂直布局类 QVBoxLayout 3. 网格布局类 QGridLayout QHBoxLayout 对象横向排列开 QVBoxLayo ...
 - 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务
			
Jerry 2016年在学习SAP CDS view时,曾经写过一个CDS view的自学系列,其中有一篇提到了一个很方便的注解: @OData.publish: true 加上这个注解的CDS vi ...
 - scrapy框架介绍
			
一,介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性 ...
 - PYTHON WEB开发学习路线
			
两年大数据广告项目测试:项目覆盖几千万用户前景还不错:只是在工作中感觉测试太无力,最近准备辞职转web开发:同时会离开成都,(/(ㄒoㄒ)/~~待了6年,要离开喜欢的城市,喜欢的女孩很难受) ps:列 ...
 - python_面向对象——编程步骤
			
校园管理系统: 设计一个学校机构管理系统,有总部.分校.有学院.老师.员工,实现具体如下需求: 1.有多个课程,课程要有定价 2.有多个班级,班级跟课程有关联 3.有多个学生,学生报名班级,交这个班级 ...
 - java中使用redis --- Set集合的简单应用
			
1.java代码 public class RedisTest01 { public static void main(String[] args){ // connect redis server ...
 - JavaScript 常用Object
			
对象 - Map 功能:Map 对象保存键值对. 方法: new Map():新建一个 Map 对象 Map.prototype.has(key):返回布尔值.表示 Map 实例是否包含键对应的值. ...
 - python线程池及其原理和使用
			
python线程池及其原理和使用 2019-05-29 17:05:20 whatday 阅读数 576 系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互.在这种情形下,使用线程池可以很 ...
 - 洛谷P2577 午餐【贪心】【线性dp】
			
题目:https://www.luogu.org/problemnew/show/P2577 题意:n个人每个人有一个打饭时间和吃饭时间,将他们分成两个队伍.每个人打到饭之后就马上去吃饭.问怎么安排可 ...
 - XML解析与xml和Map集合的互转
			
1.XML的解析.首先解析XML文件我们需要先获取到文件的存放路径,获取方法有三种分别获取xml文件不同的存放路径. 代码: public class PropertiesDemo { public ...