1

我想发送一些简单的 .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"
}

我也尝试过使用管道和流等复制文件,但都没有奏效。

4

2 回答 2

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"
}

它似乎做你想做的事。

于 2012-11-09T10:40:31.850 回答
0

首先scp像这样复制文件scp /tmp/sshf.sh $SERVER:~

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

copy_run_stay.sh使用sshf.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 $ 
于 2012-11-09T10:24:34.743 回答