『ssh』使用shell远程执行命令
经常需要远程到其他节点上执行一些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远程执行命令相关推荐
- 执行远程linux命令,linux shell 远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...
- Linux 实操———— Shell 远程执行命令
引言 目前,开发人员的部署方式是,将项目打包(Maven 打包) 然后将 生成的 jar 包等文件,通过Xshell 等终端工具手动传输到远程服务器上,然后再通过在终端执行远程服务器上的 shell ...
- 【shell】Linux Shell远程执行命令
目录 shell远程执行 前提条件: 对于简单的命令: 对于脚本的方式: SSH命令格式 主要参数说明 ssh控制远程主机,远程执行命令步骤 准备工作 基于公私钥认证远程登录可能存在的不足 ssh 执 ...
- shell 远程执行命令
转自:https://www.cnblogs.com/softidea/p/6855045.html shell远程执行: 经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再 ...
- linux远程执行shell命令行,linux shell 远程执行命令--ftp
linux shell 远程执行命令--ftp 2018-12-07 ftp有很多命令,熟悉这些命令你能大大的提高工作效率: FTP命令行格式为: ftp -v -d -i -n -g [主机名] , ...
- Linux Shell远程执行命令(ssh)
使用前提:配置ssh免密码登陆(这里我已做了互信) 一.对于几条命令: 格式: ssh remote_username@remote_ip "remote_command" 注释: ...
- shell远程执行命令
1.先要配置免密登陆,查看上一篇免密传输内容 2.命令行执行少量命令:ssh ip "command1;command2".例:ssh 172.1.1.1 "cd /ho ...
- 教你如何通过ssh控制远程主机,远程执行命令
这个分两步,很简单很实用. 第一步,设置ssh免认证,方法可见我之前发的博客:http://blog.csdn.net/hzhsan/article/details/7893995,免认证就是只不用密 ...
- SSH远程执行命令环境变量问题
SSH命令格式 usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec][-D [bind_address:] ...
最新文章
- php-fpm 进程管理
- redis延迟队列 实现_灵感来袭,基于Redis的分布式延迟队列(续)
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
- c语言编译无错误但不能输入输出,第2章-C语言版输入输出.ppt
- 牛客网【每日一题】4月13号 Accumulation Degree
- 如何下载、配置IDEA的Maven
- python可以体现数学中映射概念的是_【课时27+集合+在我的世界里+你就是唯一】 - #1...
- C++多继承的二义性
- 《网络工程师考试 考前冲刺预测卷及考点解析》复习重点
- 90后IT男被准丈母娘拒绝:家境不重要,重要的是…戳中痛处
- MATLAB数学建模教学 | 史上最强的MATLAB学习网站,你需要的这里统统都有!!!
- ROS系统学习8---节点间的内存共享(初级篇)
- DDA算法--计算机图形学
- mysql修改工具下载_MDB数据库修改器
- 如何去除图片背景变透明?透明背景图片怎么做?
- 将图片(HDC)打印出来
- loss 加权_为每个类别/实例编写自定义损失加权,对,的,loss
- 密码学–数字签名Digital Signature五种分类
- 谷歌开源 ClusterFuzz,自动化查找并修复 bug
- 自动切换输入法 mac版能让你在不同的应用之间自动的切换输入法