我每两周在办公室的远程Ubuntu CLI服务器上执行一些任务。我通常一个一个地输入命令,但是我试图找到一种方法(可能写一个脚本?)来减少重复这些步骤所花费的时间。
以下是我的工作:
ssh my_username@my_local_server
# asks for my_username password
cd /path/to/particular/folder
su particular_user_on_local_server
# asks for particular_user_on_local_server password
然后我可以完成我的任务(在Rails应用程序上运行一些Ruby脚本,复制/删除文件,重启服务等)。
我试图在一步脚本/命令中找到一种方法:
"
ssh
然后将cd
连接到目录,然后su
连接到此用户"
我尝试使用以下内容:
ssh username@server 'cd /some/path/to/folder ; su other_user'
# => does not keep my connection open to the server, just execute my `cd`
# and then tells me `su: must be run from terminal`
ssh username@server 'cd /some/path/to/folder ; bash ; su other_user'
# => keeps my connection open to the server but doesn't switch to user
# and I don't see the usual `username:~/current/folder` prefix in the CLI
有没有办法通过ssh
在远程服务器上打开终端(保持连接)并以自动方式更改目录+切换到特定? (为了让事情变得更难,我使用Yakuake)
答案 0 :(得分:2)
您可以强制使用-t
分配伪终端,更改为所需的目录,然后将shell替换为您所需的用户:
ssh -t username@server 'cd /some/path/to/folder && exec bash -c "su other_user"'
答案 1 :(得分:0)
sudo -H
保留当前工作目录,因此您可以执行以下操作:
ssh -t login_user@host.com 'cd /path/to/dir/; sudo -H -u other_user bash'
需要-t
ssh
参数,否则第二个sudo无法向您询问密码。