ssh登录远程主机,让远程主机执行脚本文件,并传参

文章介绍了如何通过SSH登录远程主机并执行脚本文件,同时传递参数给脚本。方法一是使用管道和echo命令传递参数,如`echoparam1param2|sshhadoop102bash-s<ssh2.sh`;方法二是直接在命令中传入参数,如`catssh2.sh|sshhadoop102bash-sarg1arg2arg3`。在脚本中,可以使用$1、$2等变量接收参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ssh登录远程主机,让远程主机执行脚本文件,并传参

该问题就是:
用下面这条命令时需要向ssh2.sh传入参数,该怎么办

cat ssh2.sh  | ssh hadoop102 "bash -s"

cat ssh2.sh | ssh hadoop102 “bash -s” 用该命令时需要向ssh2.sh传入参数,该怎么办

方法一

如果只考虑向ssh2.sh传入参数:

可以在命令行中使用管道符号和echo命令将参数传递给ssh2.sh脚本,然后使用ssh命令将脚本传输到远程服务器并执行。具体的实现方式如下:

echo "param1 param2" | ssh hadoop102 "bash -s" < ssh2.sh

在上面的命令中,使用echo命令将参数"param1"和"param2"传递给ssh2.sh脚本,然后使用ssh命令将脚本传输到远程服务器hadoop102并执行。在脚本中,可以使用$1和$2等变量来获取传递的参数。

例如,如果ssh2.sh脚本内容如下:

#!/bin/bash

echo "The first parameter is: $1"
echo "The second parameter is: $2"

那么在执行上面的命令时,远程服务器会输出以下内容:

The first parameter is: param1
The second parameter is: param2

总之,通过使用管道符号和echo命令将参数传递给脚本,并在脚本中使用$1、$2等变量来获取参数,可以实现在执行远程脚本时传递参数的功能。


方法二

在命令行中直接传入参数:

cat ssh2.sh | ssh hadoop102 "bash -s" arg1 arg2 arg3

在这个例子中,arg1、arg2和arg3是传递给ssh2.sh脚本的参数。
在ssh2.sh脚本中使用$1、$2、$3等变量来获取传入的参数

### 通过SSH在本地向远程服务器发送命令以执行代码 为了实现从本地控制远程服务器运行代码的功能,可以利用SSH协议来建立连接执行相应的操作。以下是关于如何通过SSH或其他方式在本地向远程服务器发送命令的具体方法。 #### 使用SSH执行简单命令 可以通过`ssh`命令直接在远程服务器上执行简单的Shell命令。例如: ```bash ssh user@remote_host "command" ``` 这里的`user`是远程服务器上的用户名,`remote_host`是目标主机地址,而`command`是要在远程服务器上执行的指令[^1]。 #### 执行多条命令 如果需要在同一会话中连续执行多个命令,可将它们用分号`;`隔开,放在一对引号内传递给SSH客户端处理。比如: ```bash ssh user@remote_host "cd /path/to/directory; ls -l" ``` 上述例子先切换目录再列出文件详情[^2]。 #### 向远程脚本传参 当要调用带有参数的脚本时,需确保整个路径及其后的所有参数都被视为单一字符串传输至远端解析器。下面展示了一个实例,其中三个参数被送入位于指定位置的服务启动脚本里: ```bash ssh root@10.20.105.21 "/opt/env/server.sh 参数1 参数2 参数3" ``` 这表明即使存在额外输入项也能顺利达成预期效果[^4]。 #### Java类库支持下的高级应用案例 除了基础命令外,在某些场景下可能还需要借助编程语言提供的API接口完成更复杂的任务自动化流程设计工作。像Java就有专门针对此类需求开发出来的第三方工具包——Rebex SSH Shell API可以帮助开发者构建更加灵活可控的应用程序框架结构用于管理和监控分布式的计算资源池状态变化情况等等][^[^35]。 ```java // 示例:创建一个基于 Rebex 的 SSH Session 对象通过它发送自定义请求消息体内容过去得到响应数据返回回来显示出来。 Ssh ssh = new Ssh(); ssh.Connect("hostname"); ssh.Authenticate(new PasswordAuthenticationMethod("username", "password")); string result = ssh.ExecuteCommand("your command here").Output; Console.WriteLine(result); ``` 以上介绍了几种常见的通过SSH或者其他技术手段实现在本地操控远程服务端运行特定逻辑单元的方式方法论探讨分析总结归纳整理完毕之后我们还可以继续深入研究更多相关内容领域知识拓展延伸学习进步成长空间无限广阔!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值