首页 > 系统相关 >Linux|常用命令|SSH远程执行Shell

Linux|常用命令|SSH远程执行Shell

时间:2023-07-02 21:25:20浏览次数:57  
标签:function Shell user cmd echo host SSH Linux ssh

#bash/python命令语法
#ssh语法同bash/python不同,避免混淆
bash script.sh params4script
python script.py params4script
bash -c ""
bash -c '' 
python -c ''
python -c ""
  • 一行和多行只是写法不同
  • 打包成函数和文件没有本质区别
  • 注意Shell会解释输入,转译字符、变量生效
  • 推荐服用本地代码,完全本地执行代码,完全远程执行代码(在本地准备好函数和变量),最大程度复用代码
  • 嵌套多层ssh
  • 执行、日志分离
#ssh远程执行命令,直接输入
ssh ${user}@${host} 'cmd;cmd;'
ssh ${user}@${host} "cmd;cmd;"
ssh ${user}@${host} '
cmd
cmd
'
ssh ${user}@${host} "
cmd
cmd
"
#ssh远程执行命令,函数,在本地准备好变量和函数,注意Shell解释会解释输入
var1=foo
var2=bar
function getHostName() {
    echo $(hostname)
    echo ${var1}
    echo ${var2}
}
getHostName

#双引号
ssh ${user}@${host} "
#经Shell解释输入,执行内容获得本地变量值
var1=${var1} 
var2=${var2} 
#获取函数定义,执行函数定义
$(typeset -f getHostName) 
#远程执行函数,复用本地函数代码
getHostName 
"
#单引号
ssh ${user}@${host} '
var1='${var1}'
var2='${var2}'
function getHostName() {
    echo $(hostname)
    echo ${var1}
    echo ${var2}
}
getHostName
$(typeset -f getHostName)
getHostName
#ssh远程执行命令,重定向标准输入到文件输入
ssh ${user}@${host} bash -s < script.sh hello world

ssh ${user}@${host} bash -s hello world < script.sh

ssh ${user}@${host} bash -s hello < script.sh world

:script.sh
echo $(hostname)
echo $1
echo $2
script.sh

#SSH嵌套执行函数
#无需顾及单双引号(脚本即函数,函数即脚本)


host4 > host3 > host2 > host1(execute cmd)


#多行
function fromhost1 () { ... }
function fromhost2 () { ssh u1@host1 "x=${x}; y=${y}; z=${z}; $(declare -f);fromhost1;" }
function fromhost3 () { ssh u2@host2 "x=${x}; y=${y}; z=${z}; $(declare -f);fromhost2;" }
function fromhost4 () { ssh u3@host3 "x=${x}; y=${y}; z=${z}; $(declare -f);fromhost3;" }
fromhost4

#一行命令;

#一条命令&&
function fromhost1 () { timeout 2s ls -al /data > tmplog;cat tmplog; } && function fromhost2 { timeout 10s ssh [email protected] "$(declare -f);fromhost1;"; } && function fromhost3 { timeout 10s ssh [email protected] "$(declare -f);fromhost2;"; } 

参考:linux SSH 嵌套远程执行命令

标签:function,Shell,user,cmd,echo,host,SSH,Linux,ssh
From: https://www.cnblogs.com/redfoxatasleep/p/17521418.html

相关文章

  • Linux训练营(用户和权限管理)
    (文章目录)前言本篇文章继续讲解一下Linux中常用的命令,用户和权限管理。一、useradd命令useradd命令是在Linux和Unix操作系统上用于创建新用户的命令。它允许系统管理员在系统上创建一个新的用户账户。下面是对useradd命令的详细解释:基本语法:useradd[选项]用户名主要选......
  • 最强优化指令大全 | 【Linux技术专题】「系统性能调优实战」终极关注应用系统性能调优
    Linux命令相关查看指标CPU指标vmstat指令vmstat-nm该命令用于每隔n秒采集系统的性能统计信息,共采集m次。[root@svr01]$vmstat13procs-----------memory-------------swap-------io------system-------cpu-----rbswpdfreebuffcachesiso......
  • [Linux][报错解决] Centos8发行版 运行locale和man报错
    报错信息先是运行manls时,Nomanualentryforls然后运行locale时,cannotsetLC_XXXtodefaultlocale:Nosuchfileordirectoryterminalmessage前因###运行manls时出现Nomanualentryforls,因为没有安装man-pages运行manls时出现man:can'tsettheloca......
  • Linux三剑客grep、sed、awk(包括练习题)
    Linuxgrep、sed、awk(包含练习题)一、grepLinuxgrep(globalregularexpression)命令用于查找文件里符合条件的字符串或正则表达式。基本用法与常见的正则表达式grep[options]pattern[files]命令 参数 匹配模式 文件数据 -i:忽略大小写进行匹配。 -v:反向查找,只......
  • ​Centos Linux 上搭建Apache服务器
    搭建Apache服务器  配置准备:网络     检查 配置问题解决  Centos7最小化安装报错Therearenoenabledrepos.Run"yumrepolistall"toseethereposyouhave.解决办法  身份切换到root账户,进入vim/etc/sysconfig/network-scripts/ifcfg-ens33修改文件,将ONBO......
  • Linux 图形栈从入门到放弃 --- Linux 图形相关概念简介
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  在日常生活中,像我们常用的ubuntu(Linux),windows,android,mac等等系统,我们都能够看到丰富的图形界面。此外,如果大家了解过以前的嵌入式系统,很多......
  • Linux Subreaper 机制及内核态逃离方法(PR_SET_CHILD_SUBREAPER, prctl, systemed)
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  无前言  由于某些其他的原因,我们在测试另外一个问题的时候发现了一个奇怪的现象:在我们一直朴素的认知下,如果一个程序创建了parent-process和child-......
  • LinuxDNS分析从入门到放弃(记一次有趣的dns问题排查记录,ping 源码分析,getaddrinfo源码
    PS:要转载请注明出处,本人版权所有。PS:这个只是基于《我自己》的理解,如果和你的原则及想法相冲突,请谅解,勿喷。环境说明  ubuntu18.04前言  我们这里有一块嵌入式板卡,当我们通过PING测试内网IP时,发现外网IP访问正常,但是测试域名访问一直报unknownhost。一般来说,在ubun......
  • Kali Linux 配置系统代理
    打开redsocks配置文件vim/etc/redsocks.conf修改配置文件redsocks{/*`local_ip'defaultsto127.0.0.1forsecurityreasons,*use0.0.0.0ifyouwanttolistenoneveryinterface.*`local_*'areusedasporttoredirectto.......
  • Vmware Tools工具安装-Linux(转载自“半夏微凉”)
    本文转载自“半夏微凉”,仅用于自己的学习记录,方便日后查找。若有侵权行为,请联系本人进行删除。转载自:VmwareTools工具安装-Linux-半夏微凉(lentim.com)VmwareTools工具安装  背景:需要使用vmware安装oracle数据库,但linux机由于没有安装vmwaretools无法跟主机共享文件,......