SSH命令格式
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:]port] [-e escape_char] [-F configfile][-I pkcs11] [-i identity_file][-L [bind_address:]port:host:hostport][-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port][-R [bind_address:]port:host:hostport] [-S ctl_path][-W host:port] [-w local_tun[:remote_tun]][user@]hostname [command]

主要参数说明

-l   指定登入用户
-p 设置端口号
-f  后台运行,并推荐加上 -n 参数
-n 将标准输入重定向到 /dev/null,防止读取标准输入。如果在后台运行ssh的话(-f选项),就需要这个选项。
-N 不执行远程命令,只做端口转发
-q 安静模式,忽略一切对话和错误提示
-T 禁用伪终端配置
-t (tty)为远程系统上的ssh进程分配一个伪tty(终端)。如果没有使用这个选项,当你在远程系统上运行某条命令的时候,ssh不会为该进程分配tty(终端)。相反,ssh将会把远端进程的标准输入和标准输出附加到ssh会话上去,这通常就是你所希望的(但并非总是如此)。这个选项将强制ssh在远端系统上分配tty,这样那些需要tty的程序就能够正常运行。
-v verbose)显示与连接和传送有关的调试信息。如果命令运行不太正常的话,这个选项就会非常有用。

ssh控制远程主机,远程执行命令步骤
第一步,设置ssh免认证,免认证就是不用密码认证就可以直接登录,这在写脚本服务器控制时特别有用。

每二步,就是到远端服务器上去执行命令

准备工作
基于公私钥认证(可参考:Linux配置SSH密钥登录详解及客户端测试使用无密码登录)或者用户名密码认证(可参考:SSH使用expect自动输入密码、命令实现非交互式密码授权)能确保登录到远程服务器
cmd如果是脚本,注意绝对路径问题(相对路径在远程执行时就是坑)

基于公私钥认证远程登录可能存在的不足

这个可以满足我们大多数的需求,但是通常运维部署很多东西的时候需要root权限,但是有几处限制:

  1. 远程服务器禁止root用户登录
  2. 在远程服务器脚本里转换身份用expect需要send密码,这样不够安全

ssh 执行远程命令格式

ssh [options] [user@]host [command]

其中,host为想要连接到的OpenSSH服务器(远程系统)的名称,它是惟一的必需参数。host可以是某个本地系统的名称,也可以是因特网上某个系统的FQDN(参见术语表)或者是一个IP地址。命令ssh host登录到远程系统host,使用的用户名与正在本地系统上使用的用户名完全相同。如果希望登录的用户名与正在本地系统上使用的用户名不同,那么就应该包含user@。根据服务器设置的不同,可能还需要提供口令。

 
ssh远程执行命令
如果没有提供command参数,ssh就会让你登录到host上去。远程系统显示一个shell提示符,然后就能够在host上运行命令。命令exit将会关闭与host的连接,并返回到本地系统的提示符。
1. ssh远程执行简单的命令
[root@web01 data]# ls /data/
10.0.0.7  web01
[root@web02 data]# ls /data/
10.0.0.8  web02//ssh远程执行一个命令
[root@web01 data]# ssh 10.0.0.8 ls /data
10.0.0.8
web02//ssh远程执行两个命令,不加引号
[root@web01 data]# ssh 10.0.0.8 ls /data;ls  //没有加双引号,第二个ls直接在本地的目前所在目录执行
10.0.0.8
web02
10.0.0.7  web01//ssh远程执行两个命令,加引号(无变量,单双引号都行)
[root@web01 data]# ssh 10.0.0.8 'ls /data;ls'
10.0.0.8
web02
anaconda-ks.cfg
install.log
install.log.syslog
nginx.sh

1. 如果想在远程机器上连续执行多条命令,可以用单引号或者双引号将这些命令括起来。

2. 如果不加单引号或者双引号,第二个ls命令在本地执行。

  • 例如 ssh user@node cd /local ls 则 ls 只会执行 cd /local 命令,ls命令在本地执行,加了双引号或者单引号,则被括起来的命令被当做ssh命令的一个参数,所以会在远程连续执行。

3. 分号,两个命令之间用分号隔开

 2. 通过shell脚本的方式远程执行命令
示例一说明:[root@web01 data]# cat /server/scripts/ssh.sh
#!/bin/bash
ssh root@10.0.0.8 > /dev/null 2>&1 << eeooff
cd /home
touch abcdefg.txt
exit
eeooff
echo done!
[root@web01 data]# sh /server/scripts/ssh.sh
done!
[root@web01 data]# ssh 10.0.0.8 "ls /home"
abcdefg.txt
oldboy
web远程执行的内容在“<< eeooff ” 至“ eeooff ”之间,在远程机器上的操作就位于其中,注意的点:
1. << eeooff,ssh后直到遇到eeooff这样的内容结束,eeooff可以随便修改成其他形式。
2. 重定向目的在于不显示远程的输出了
3. 在结束前,加exit退出远程节点
链接:http://www.cnblogs.com/ilfmonday/p/ShellRemote.html
示例二说明:
#!/bin/bash
ssh root@192.168.0.23 < < remotessh
killall -9 java
cd /data/apache-tomcat-7.0.53/webapps/
exit
remotessh
远程执行的内容在"< < remotessh " 至" remotessh "之间在远程机器上的操作就位于其中,注意的点:<< remotessh,ssh后直到遇到remotessh这样的内容结束,remotessh可以随便修改成其他形式。在结束前,加exit退出远程节点 如果不想日志文件在本机出现可以修改配置
ssh root@192.168.0.23 > /dev/null 2>&1 < < remotesshhttps://blog.csdn.net/sn3009/article/details/52779642

 3. 查看远程服务器的CPU信息

https://www.cnblogs.com/softidea/p/6855045.html

example:

find ./ ! -path "./output/*" ! -path "./output1/*" -type f | xargs grep ""

https://blog.51cto.com/xoyabc/2108052

转载于:https://www.cnblogs.com/ybyqjzl/p/10450086.html

SSH远程执行命令环境变量问题相关推荐

  1. linux 带环境变量 远程执行,SSH远程执行命令环境变量问题

    SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address: ...

  2. 解决SSH远程执行命令找不到环境变量的问题

    解决SSH远程执行命令找不到环境变量的问题 参考文章: (1)解决SSH远程执行命令找不到环境变量的问题 (2)http://www.cnblogs.com/zhenyuyaodidiao/p/928 ...

  3. 关于ssh远程执行命令出现xxx: command not found问题

    最初是在虚拟机搭建Hadoop3.x集群,使用命令ssh hadoop001 jps,出现: bash: jps: command not found 但是单独测试jps命令和先ssh登录再测试jps ...

  4. 远程启动hadoop,ssh远程执行命令报错!hdfs命令不存在!

    1.任务:远程启动hadoop集群. #!/usr/bin/env bash HADOOP_HOME=/root/hadoop/hadoop-3.3.2 if [ $# -lt 1 ] thenech ...

  5. 【linux】ssh 远程执行命令

    1.概述 转载并且补充:ssh 远程执行命令 SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操 ...

  6. day26-3 模拟ssh远程执行命令

    目录 模拟ssh远程执行命令 服务器 客户端 模拟ssh远程执行命令 实现在客户端输入执行命令后,返回执行命令的信息.如输入dir,显示当前目录下的所有文件和文件夹 服务器 import socket ...

  7. ssh远程执行命令 linux,Linux下使用SSH远程执行命令方法收集

    说明:可以做SSH免密登录之后执行,这样可以省去每次执行输入密码的提示. 对于简单的命令: 如果是简单执行几个命令,则: ssh user@remoteNode "cd /home ; ls ...

  8. 【linux】ssh 远程执行命令自动输入密码方式

    ssh 远程执行命令自动输入密码方式 场景: 由于多台机必须要登陆执行命令,需要使用密钥一台台登录,所以每次登陆机器的时候都需要手动输入域账号密码.密码太长且复杂,手动输入容易输错,故使用脚本来做这个 ...

  9. ssh远程执行命令而找不到环境变量

    问题 Docker Ubuntu:我对应的java环境变量,在每台机器上都已经配置完成,并且每台机器上独自运行java命令没有问题. 但是通过ssh远程调用命令就会出现问题,如下 root@node0 ...

最新文章

  1. js中修改this的指向方法整理
  2. 寻找UHRR(universal human reference RNA)的表达谱
  3. ExtJs Form 表单验证
  4. 北京通州拟3年培训技能人才5万人次 服务城市副中心行政办公区等
  5. Spring Boot结合spring-data-jpa
  6. 纯CSS3实现Material Design
  7. 征信上显示保险代偿记录,那你的信用基本就黑了
  8. 骆驼路线的主/从故障转移
  9. Linux 多线程开发-线程的属性-分离detached和连接joinable
  10. 前端笔记-使用JavaScript防止空表单提交
  11. notepad实现垂直标签
  12. mysql 统计函数 双条件_使用COUNTIFS函数统计符合多个条件的单元格的方法
  13. 最近在听--《谁杀死了知更鸟》
  14. AD各种布线方法总结
  15. 查看linux版本是多少位
  16. 计算机视觉室内定位的原理,基于计算机视觉的室内定位与导航系统
  17. PHP是最好的语言吗? 1
  18. mcjava盗版联机_使用N2N组建虚拟局域网联机游戏(我的世界 Java版)
  19. 黑马程序员——Java基础(十一)之GUI
  20. [Unity3D] 技能图标的冷却效果和时间显示

热门文章

  1. Query siblings()
  2. 炼数成金数据分析课程---17、机器学习聚类算法(后面要重点看)
  3. windows使用git clone速度慢,改善方法
  4. springmvc+mybatis多数据源配置,AOP注解动态切换数据源
  5. ptyhon的列表与字典操作
  6. 写出优质Java代码的4个技巧
  7. 标记区域 Region
  8. Linux系统Zookeeper集群配置
  9. jsp 连接sql数据库查询(源代码)
  10. 刷排名软件使用中需要用到的seo基础知识