如果你想使用ssh
命令从当前机器(即你正在操作的机器)连接到另一台机器,并在那台远程机器上执行当前机器上的一个脚本,你需要将脚本文件复制到远程机器,或者使用其他方法(如通过HTTP、FTP等)在远程机器上访问该脚本。
但是,如果你只是想在远程机器上执行一个命令,而这个命令的内容是当前机器上的一个脚本的内容,你可以使用ssh
的cat
命令结合管道(|
)和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命令来给远程脚本添加执行权限(如果它还没有的话)。