我已经通过地址' abc.def.com'连接到专用网络上的虚拟机。使用ssh
,在该VM上有一个托管Python Web应用程序(IPython Notebook)的应用程序,我可以通过将本地浏览器指向' abc.def.com来访问该应用程序:7777&# 39;
从该Web应用程序我可以通过在其前面使用'!'来调用shell命令,例如!ls -lt
将列出VM当前工作目录中的文件。但由于我使用自己的笔记本电脑浏览器,我认为我应该能够在我的本地文件上运行shell命令。我该怎么做?
如果不可能,我可以在Web应用程序中运行哪些Python / shell命令来自动获取笔记本电脑的IP地址以使用scp
之类的内容?我知道如何获取我的IP地址,但是我想创建一个程序,它会自动为使用它的人启用scp。
答案 0 :(得分:1)
你有ssh访问权限,所以你可以可能编写一个python函数,让你通过scp
使用ssh进行通信的安全复制命令来传输文件。如果您与服务器交换密钥,则不必输入密码,因此我认为从这个角度来看没有问题。问题是,如果您有从服务器访问本地计算机的地址。
我从笔记本电脑整天开始使用各种遥控器,从笔记本电脑到服务器,我可以使用此功能:
def scp_to_server(address, local_file, remote_file):
subprocess.call(['scp',local_file,"myusername@{}:{}".format(address, remote_file)])
如果路径正确,我会将文件从本地计算机复制到远程,我有权复制文件,本地计算机的id_rsa.pub
密钥位于~/.ssh/authorized_keys
文件中远程。
我无法启动从远程到本地计算机的安全副本,但因为我没有地址可以访问本地计算机,因为我可以在遥控器上“看到”。
如果我在笔记本电脑上打开终端并运行hostname
我看到mylaptop.local
,在遥控器上我看到remoteserver@where.i.work.edu
但第一个是本地地址我可以从其他机器看到它在我家的局域网上,(因为我已经配置了),但我无法从遥控器上看到mylaptop.local
。我知道有一种方法可以配置,所以我可以在任何地方找到我家里的笔记本电脑,但我从来没有必要这样做(因为我随身携带笔记本电脑)所以我无法帮助你。我认为还有一些比你想要的更多的障碍。
您可以在本地计算机上实现上述功能,然后通过该方式传输文件。