当前位置: 首页 > news >正文

shell:远程机器执行当前机器的脚本

如果你想使用ssh命令从当前机器(即你正在操作的机器)连接到另一台机器,并在那台远程机器上执行当前机器上的一个脚本,你需要将脚本文件复制到远程机器,或者使用其他方法(如通过HTTP、FTP等)在远程机器上访问该脚本。

但是,如果你只是想在远程机器上执行一个命令,而这个命令的内容是当前机器上的一个脚本的内容,你可以使用sshcat命令结合管道(|)和bash来执行。但是,这通常不是一个推荐的做法,因为它可能会导致安全或可维护性问题。

然而,以下是一个简单的示例,展示了如何将当前机器上的脚本内容发送到远程机器并执行:

#!/bin/bash  # 设置远程机器的IP地址和用户名  
REMOTE_IP="192.168.0.1"  
REMOTE_USER="your_remote_username"  # 假设你有一个名为local_script.sh的脚本在当前目录下  
LOCAL_SCRIPT_PATH="./local_script.sh"  # 使用ssh命令和'cat'命令将脚本内容发送到远程机器并执行  
ssh "$REMOTE_USER@$REMOTE_IP" "bash -s" < "$LOCAL_SCRIPT_PATH"  # 注意:这种方法将脚本内容作为输入发送到远程bash,它要求脚本内容是安全的并且可以在远程机器上直接执行

在这个例子中,bash -s告诉远程的bash从标准输入(stdin)读取命令并执行它们。< "$LOCAL_SCRIPT_PATH"部分将local_script.sh的内容重定向到ssh命令的标准输入,从而将其发送到远程机器。

然而,一个更安全、更常见的做法是将脚本文件复制到远程机器,然后在远程机器上执行它。这可以通过scp(安全复制)或rsync命令来完成,如下所示:

#!/bin/bash  # 设置远程机器的IP地址和用户名  
REMOTE_IP="your_remote_ip_address"  
REMOTE_USER="your_remote_username"  
REMOTE_DIR="/path/to/remote/directory"  # 远程机器上存放脚本的目录  # 假设你有一个名为local_script.sh的脚本在当前目录下  
LOCAL_SCRIPT_PATH="./local_script.sh"  # 使用scp将脚本复制到远程机器  
scp "$LOCAL_SCRIPT_PATH" "$REMOTE_USER@$REMOTE_IP:$REMOTE_DIR"  # 然后在远程机器上执行脚本  
ssh "$REMOTE_USER@$REMOTE_IP" "bash $REMOTE_DIR/local_script.sh"  # 记得在远程机器上给脚本添加执行权限(如果需要的话)  
# ssh "$REMOTE_USER@$REMOTE_IP" "chmod +x $REMOTE_DIR/local_script.sh"

请注意,你需要在远程机器上的适当位置有写权限,以便能够将脚本复制过去,并且可能需要使用chmod命令来给远程脚本添加执行权限(如果它还没有的话)。

相关文章:

  • 2024年华为最新笔试预约流程,超详细!内附操作流程!
  • echarts自定义legend方法
  • oracle清理归档日志
  • python5 正则表达式
  • 【学习笔记】Elastic-Job和Quartz 实现企业级定时任务
  • 【Ruby基础01】windows和termux中搭建Ruby开发环境
  • 薅羊毛app小游戏对接广告联盟开发
  • 汽车信息安全硬件讨论:SE vs HSM
  • 猫头虎分享已解决Bug || **Mismatched Types**: `mismatched types`
  • 【CT】LeetCode手撕—23. 合并 K 个升序链表
  • 吴恩达机器学习 第三课 week1 无监督学习算法(上)
  • 【stm32单片机应用】基于I2C协议的OLED显示(利用U82G库)
  • 操作系统 大作业
  • 大模型 Scaling Law 的本质是工业化思维,Token 工厂,Token 生意
  • 微服务为什么使用RPC而不使用HTTP通信
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • exif信息对照
  • Java IO学习笔记一
  • javascript从右向左截取指定位数字符的3种方法
  • SAP云平台里Global Account和Sub Account的关系
  • spring + angular 实现导出excel
  • Vue小说阅读器(仿追书神器)
  • vue中实现单选
  • windows下如何用phpstorm同步测试服务器
  • 后端_ThinkPHP5
  • 基于Android乐音识别(2)
  • 简单易用的leetcode开发测试工具(npm)
  • 区块链共识机制优缺点对比都是什么
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 我与Jetbrains的这些年
  • 一个项目push到多个远程Git仓库
  • 移动端解决方案学习记录
  • Java总结 - String - 这篇请使劲喷我
  • ​插件化DPI在商用WIFI中的价值
  • ‌移动管家手机智能控制汽车系统
  • !!Dom4j 学习笔记
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (2)(2.10) LTM telemetry
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (全注解开发)学习Spring-MVC的第三天
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • .aanva
  • .cfg\.dat\.mak(持续补充)
  • .NET CF命令行调试器MDbg入门(一)
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .net 验证控件和javaScript的冲突问题
  • .NET 直连SAP HANA数据库
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .net下简单快捷的数值高低位切换
  • .NET中使用Redis (二)