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 ...
随机推荐
- node.js 微信开发3-网页授权
1.配置公众号的自定义菜单,如 { "button":[ { "type":"view", "name":"公 ...
- MongoDB 创建数据库和查询数据
1.选择数据库 use test 2.创建用户 db.createUser({user:"test01",pwd:"12345",roles:[{role ...
- python接口自动化1-requests-html支持JavaScript渲染页面
前言 requests虽好,但有个遗憾,它无法加载JavaScript,当访问一个url地址的时候,不能像selenium一样渲染整个html页面出来.requests-html终于可以支持JavaS ...
- Flutter——AlertDialog组件、SimpleDialog组件、showModalBottomSheet组件(弹窗组件)
AlertDialog组件 import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( title: " ...
- TLS1.3 握手协议的分析
1.LTS支持的三种基本的密码交换模式 (EC)DHE (Diffie-Hellman both the finte field and ellptic curve varieties) PSK-on ...
- JS获取当前月份的最后一天
<button onclick="function_name()">获取当前月份的最后一天</button> <script type="t ...
- JAVA API连接HDFS HA集群
使用JAVA API连接HDFS时我们需要使用NameNode的地址,开启HA后,两个NameNode可能会主备切换,如果连接的那台主机NameNode挂掉了,连接就会失败. HDFS提供了names ...
- 关于WAMP的apache 人多了就访问非常卡的问题解决方法
一直用WAMP 但人多了(在线人数上了500) 就卡得不得了 而这时服务器负载却很小 CPU15% 内存25% 整了好久都没个结果 偶然看到一篇教程 原来是连接数限制的问题 改了就速度飞快了 打开ap ...
- vue 自定义事件
- 15组-Legendary-团队项目总结
一.项目名称:教室选座系统 二.项目进度表: 项目进度表 活动名称 所属阶段 计划开始时间 计划结束时间 实际结束时间 完成情况 项目方向 项目确立阶段 2019.11.14 2019.11.15 2 ...