经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了。所以介绍几种shell命令远程执行的方法。
前提条件:配置shell免密登录

执行单条命令

ssh user@remoteNode "df -h"

执行多条命令

ssh user@remoteNode "cd /home ; ls" #双引号,必须有。如果不加双引号,第二个ls命令在本地执行;分号,两个命令之间用分号隔开

执行需要交互的命令

ssh user@remoteNode "sudo ls /root"

sudo: sorry, you must have a tty to run sudo

ssh user@remoteNode "top"
TERM environment variable not set.

这两条命令虽然提示的失败原因不同,但它们有一个共同点:都需要与用户交互(需要 TTY)。所以它们失败的原因也是相同的:
默认情况下,当你执行不带命令的 ssh 连接时,会为你分配一个 TTY。因为此时你应该是想要运行一个 shell 会话。
但是当你通过 ssh 在远程主机上执行命令时,并不会为这个远程会话分配 TTY。此时 ssh 会立即退出远程主机,所以需要交互的命令也随之结束。
好在我们可以通过 -t 参数显式的告诉 ssh,我们需要一个 TTY 远程 shell 进行交互!
添加 -t 参数后,ssh 会保持登录状态,直到你退出需要交互的命令。

ssh user@remoteNode "sudo ls /root"
sudo: sorry, you must have a tty to run sudo   #必须分配一个终端
ssh -t user@remoteNode "sudo ls /root"
[sudo] password for user:        #加-t选项后成功,输入用户密码

2.脚本方式:

2.1执行本地脚本

ssh user@remoteNode < test.sh

2.2向脚本传递参数

ssh user@remoteNode 'bash -s' < test.sh age

2.3执行远程服务器上的脚本

ssh user@remoteNode "/tmp/test.sh" #写脚本的绝对路径

2.4执行远程服务器上的脚本并带参数

ssh user@remoteNode "/tmp/test.sh arguement"

示例2:
初始化系统环境。在test.sh脚本中编写:关闭selinux命令、关闭iptables、修改hosts文件、安装jdk环境等。
#!/bin/bash  #变量定义
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="tester"
remote_cmd="/home/test.sh"  for ip in ${ip_array[@]}
do  ssh -t -p $port $user@$ip "remote_cmd"
done

命令使用方法

ssh [-p port] [user@]hostname [command]

port : ssh连接端口号
user: ssh连接用户名
ip:ssh连接的ip地址
cmd:远程服务器需要执行的操作
其他选项:
-t:强制分配一个伪终端,可以在远程机器上执行任何全屏幕(screen-based)程序,所以非常有用,例如菜单服务。双t选项(-tt)的意思是强制分配终端,即使ssh没有本地终端。
-T:禁止分配伪终端。
-q:静默模式,忽略所有警告和诊断信息。

『ssh』使用shell远程执行命令相关推荐

  1. 执行远程linux命令,linux shell 远程执行命令

    经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...

  2. Linux 实操———— Shell 远程执行命令

    引言 目前,开发人员的部署方式是,将项目打包(Maven 打包) 然后将 生成的 jar 包等文件,通过Xshell 等终端工具手动传输到远程服务器上,然后再通过在终端执行远程服务器上的 shell ...

  3. 【shell】Linux Shell远程执行命令

    目录 shell远程执行 前提条件: 对于简单的命令: 对于脚本的方式: SSH命令格式 主要参数说明 ssh控制远程主机,远程执行命令步骤 准备工作 基于公私钥认证远程登录可能存在的不足 ssh 执 ...

  4. shell 远程执行命令

    转自:https://www.cnblogs.com/softidea/p/6855045.html shell远程执行: 经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再 ...

  5. linux远程执行shell命令行,linux shell 远程执行命令--ftp

    linux shell 远程执行命令--ftp 2018-12-07 ftp有很多命令,熟悉这些命令你能大大的提高工作效率: FTP命令行格式为: ftp -v -d -i -n -g [主机名] , ...

  6. Linux Shell远程执行命令(ssh)

    使用前提:配置ssh免密码登陆(这里我已做了互信) 一.对于几条命令: 格式: ssh remote_username@remote_ip "remote_command" 注释: ...

  7. shell远程执行命令

    1.先要配置免密登陆,查看上一篇免密传输内容 2.命令行执行少量命令:ssh ip "command1;command2".例:ssh 172.1.1.1 "cd /ho ...

  8. 教你如何通过ssh控制远程主机,远程执行命令

    这个分两步,很简单很实用. 第一步,设置ssh免认证,方法可见我之前发的博客:http://blog.csdn.net/hzhsan/article/details/7893995,免认证就是只不用密 ...

  9. SSH远程执行命令环境变量问题

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

最新文章

  1. php-fpm 进程管理
  2. redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列(续)
  3. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
  4. c语言编译无错误但不能输入输出,第2章-C语言版输入输出.ppt
  5. 牛客网【每日一题】4月13号 Accumulation Degree
  6. 如何下载、配置IDEA的Maven
  7. python可以体现数学中映射概念的是_【课时27+集合+在我的世界里+你就是唯一】 - #1...
  8. C++多继承的二义性
  9. 《网络工程师考试 考前冲刺预测卷及考点解析》复习重点
  10. 90后IT男被准丈母娘拒绝:家境不重要,重要的是…戳中痛处
  11. MATLAB数学建模教学 | 史上最强的MATLAB学习网站,你需要的这里统统都有!!!
  12. ROS系统学习8---节点间的内存共享(初级篇)
  13. DDA算法--计算机图形学
  14. mysql修改工具下载_MDB数据库修改器
  15. 如何去除图片背景变透明?透明背景图片怎么做?
  16. 将图片(HDC)打印出来
  17. loss 加权_为每个类别/实例编写自定义损失加权,对,的,loss
  18. 密码学–数字签名Digital Signature五种分类
  19. 谷歌开源 ClusterFuzz,自动化查找并修复 bug
  20. 自动切换输入法 mac版能让你在不同的应用之间自动的切换输入法

热门文章

  1. 智慧城市综合管理平台,以一种更智慧的方式促进城市运行
  2. 爬虫第六课:爬取携程酒店数据
  3. ArcGis engine开发中,FlexNet Licensing error:-42,147报错的解决办法,亲测有用!
  4. EVE-NG问题解决方法
  5. 双层for循环优化版
  6. 《ZigBee开发笔记》第二部分 基础篇-第5章 CC2530 PWM调光
  7. CS+ for CC编译器设置记录
  8. Web3中文|零知识证明正在改变以太坊的游戏规则
  9. Windows Azure安全概述
  10. Visio如何给字母加上划线