从sh文件发送命令并通过ssh保持登录状态

时间:2012-11-09 10:20:46

标签: linux bash shell ssh

我想发送一些简单的.sh文件中的一些命令(函数),并在ssh-ing到远程计算机时保持登录状态。

我尝试了很多方法,但到目前为止还没有任何方法。 这里只有一个:

msh(){
    SERVER=$1
    LOCAL=10.20.1.1
    SSHF=`cat /tmp/sshf.sh`
    ssh $SERVER -R 47471:$LOCAL:22 "$SSHF; bash --login"
}

我还尝试使用管道和流来复制文件,但没有一个工作。

2 个答案:

答案 0 :(得分:1)

您需要在$SERVER预留终端,然后使用-t开关执行此操作。如果我将您的功能更改为:

msh(){
    SERVER=$1
    LOCAL=10.20.1.1
    SSHF=`cat /tmp/sshf.sh`
    ssh -t $SERVER -R 47471:$LOCAL:22 "$SSHF; bash --login"
}

似乎做你想做的事。

答案 1 :(得分:0)

首先使用此scp

scp /tmp/sshf.sh $SERVER:~复制文件

这会将您的脚本sshf.sh放在$SERVER上的主目录中,然后您可以ssh进入计算机并运行ssh $SERVER cat ~/sshf.sh

由于名为copy_run_stay.shsshf.sh包含echo hello的脚本如下所示:

#!/bin/bash

# get server name as argument to script
SERVER=$1
script='sshf.sh' 
# copy script to server
scp $script $SERVER:~
# run script on server
ssh $SERVER cat ~/sshf.sh
# stay on server
ssh $SERVER

并且会产生:

# run the script on laptop
laptop $ ./copy_run_stay.sh
# sshf.sh gets copied to server and ran
server $ hello 
# we are still on the server
server $ 
相关问题