使用 Python 3 从 Windows 进行 SSH 和 SCP

发布于 2024-11-09 04:12:51 字数 326 浏览 4 评论 0原文

我已经被困在这里好几天了。我想将文件从 Windows 复制到远程 Linux 服务器并在那里运行脚本。我有 ssh 和 scp 工具。我可以通过命令行调用linux服务器,但是当我通过python调用它时,它会被挂起。

pro=subprocess.Popen('ssh user@server')
pro.communicate()

有一个空白屏幕。之后我输入的任何内容都会出现在我的屏幕上。 我希望应该有密码提示,但没有。我想过使用像 paramiko、pexpect、pyssh 这样的库,但 Python 3 都不支持它们,

非常感谢任何帮助。

I've Been stuck here for days. I want to copy a file from my windows to a remote linux server and run the script there. I've tool for ssh and scp. from which I can call the linux server through command line but when I call it through python it gets hanged.

pro=subprocess.Popen('ssh user@server')
pro.communicate()

there is a blank screen. whatever I type then after appear to my screen.
I was hoping there should be a password prompt but there isn't any. I thought of using library like paramiko, pexpect, pyssh but none of them are supported in Python 3

Any help is highly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情感失落者 2024-11-16 04:12:51

http://docs.fabfile.org/en/1.0.1/index.html

我不确定它是否可以通过 2to3 转换

,但使用起来相当简单:

from fabric.api import run, env
from fabric.context_managers import hide
from fabric.colors import green

with hide('status', 'running', 'output'):
    print('Apache ' + env.host + ': ' + green(run('wget -q -O /dev/null http://localhost/ && echo OK')))

env.host 来自命令行,twisted couch 是另一种选择,但尚未移植到 py3k

http://docs.fabfile.org/en/1.0.1/index.html

I'm not sure it can be converted by 2to3

but it's rather simple to use:

from fabric.api import run, env
from fabric.context_managers import hide
from fabric.colors import green

with hide('status', 'running', 'output'):
    print('Apache ' + env.host + ': ' + green(run('wget -q -O /dev/null http://localhost/ && echo OK')))

env.host comes from command line, twisted couch is another alternative but it's not yet ported to py3k

猫九 2024-11-16 04:12:51

还有一个这样的问题。使用网猫。 “人数控”。 在 python 中使用 os.system() 在客户端和服务器端生成它。

来自 netcat 手册页:

描述

nc(或 netcat)实用程序几乎可以用于任何事情
涉及 TCP 或 UDP。它可以打开TCP连接,发送UDP数据包,
监听任意TCP和UDP端口,进行端口扫描并处理
IPv4 和 IPv6。与 telnet(1) 不同,nc 脚本很好,并且分开
错误消息发送到标准错误而不是发送到标准
输出,就像 telnet(1) 所做的那样。

常见用途包括:

  • 简单的 TCP 代理
  • 基于 shell 脚本的 HTTP 客户端和服务器
  • 网络守护进程测试
  • 用于 ssh(1) 的 SOCKS 或 HTTP ProxyCommand
  • 还有很多很多

这对于 Intranet 和 Internet 上的本地或远程计算机(如果了解的话)非常有用相关问题(原始问题没有指定“远程”的含义)。一些示例是:

至于评论“但这不是Python”:当有非常好的基础实用程序已经移植到所有操作系统并且除了底层基础操作系统之外没有其他依赖项时,不要重新发明轮子。

There was another question like this. Use netcat. 'man nc'. Use os.system() in python to spawn it on both client side and server side.

From the netcat manual page:

DESCRIPTION

The nc (or netcat) utility is used for just about anything under the sun
involving TCP or UDP. It can open TCP connections, send UDP packets,
listen on arbitrary TCP and UDP ports, do port scanning, and deal with
both IPv4 and IPv6. Unlike telnet(1), nc scripts nicely, and separates
error messages onto standard error instead of sending them to standard
output, as telnet(1) does with some.

Common uses include:

  • simple TCP proxies
  • shell-script based HTTP clients and servers
  • network daemon testing
  • a SOCKS or HTTP ProxyCommand for ssh(1)
  • and much, much more

This works great for both local or remote machines on an intranet and also internet if aware of the related issues (original question did not specify the meaning of 'remote'). Some examples are:

As for the comment "but that isn't python": Don't reinvent the wheel when there are very good foundational utilities which have been ported to all O/Ss and have no other dependencies other than the underlying base O/S.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文