目录
一、背景
要在远程Linux机器上启动一个脚本并保存输出,需要能够从一台机器上无密码(使用SSH密钥认证)远程登录另一台机器。以下步骤和脚本可以完成这个任务。
二、实现步骤
2.1、步骤 1: 设置SSH免密码登录
在本地机器上生成SSH密钥:
ssh-keygen -t rsa
将公钥复制到远程机器上,以便无密码登录:
ssh-copy-id root@192.168.131.1
按照提示输入远程机器的密码,这将会把公钥添加到远程机器的~/.ssh/authorized_keys
文件中。
2.2、步骤 2: 创建start.sh脚本
在本地机器上创建start.sh
脚本,它将通过SSH连接到远程机器并执行test.sh
脚本,并将输出保存到本地的.text
文件中。
#!/bin/bash
# 定义远程服务器的IP、用户名和脚本路径
REMOTE_IP="192.168.131.1"
USER="root"
SCRIPT_PATH="/path/to/test.sh" # 替换为test.sh脚本的实际路径
# 通过SSH执行远程脚本,并将输出重定向到本地的text文件中
ssh ${USER}@${REMOTE_IP} "bash ${SCRIPT_PATH}" > output.text 2>&1
确保替换/path/to/test.sh
为远程机器上test.sh
脚本的实际路径。
2.3、步骤 3: 赋予脚本执行权限
给start.sh
脚本文件执行权限:
chmod +x start.sh
2.4、步骤 4: 执行start.sh脚本
现在,我们可以在本地机器上执行start.sh
脚本,它将连接到远程机器,执行test.sh
脚本,并将输出保存到本地的output.text
文件中。
./start.sh
请注意,如果远程脚本test.sh
需要特殊的环境变量或运行条件,我们可能需要在SSH命令中调整相应的环境设置。
另外,有一个小错误,我们提到保存文件为.text
,但通常文本文件的后缀是.txt
。上面的脚本会将输出保存为output.text
,如果希望使用.txt
作为后缀,请将脚本中的重定向部分改为> output.txt 2>&1
。