相关疑难解决方法(0)

如何将RSA密钥添加到authorized_keys文件?

我已经创建了一个RSA公钥,我想将其添加到authorized_keys文件中,但是我的Ubuntu 11.10机器中没有这样的文件.

如何将密钥添加到authorized_keys

ssh-keys authorized-keys ubuntu-11.10

65
推荐指数
4
解决办法
12万
查看次数

Python子进程readlines()挂起

我尝试完成的任务是流式传输ruby文件并打印出输出.(注意:我不想一次打印出所有内容)

main.py

from subprocess import Popen, PIPE, STDOUT

import pty
import os

file_path = '/Users/luciano/Desktop/ruby_sleep.rb'

command = ' '.join(["ruby", file_path])

master, slave = pty.openpty()
proc = Popen(command, bufsize=0, shell=True, stdout=slave, stderr=slave, close_fds=True)     
stdout = os.fdopen(master, 'r', 0)

while proc.poll() is None:
    data = stdout.readline()
    if data != "":
        print(data)
    else:
        break

print("This is never reached!")
Run Code Online (Sandbox Code Playgroud)

ruby_sleep.rb

puts "hello"

sleep 2

puts "goodbye!"
Run Code Online (Sandbox Code Playgroud)

问题

流文件工作正常.hello/goodbye输出以2秒延迟打印.正如脚本应该工作.问题是readline()最后会挂起而永不退出.我从未到过最后一个印刷品.

我知道有很多这样的问题,这里有一个stackoverflow但是没有它们让我解决问题.我不是那个整个子流程的东西,所以请给我一个更实际/具体的答案.

问候

编辑

修复意外的代码.(与实际错误无关)

python subprocess

23
推荐指数
2
解决办法
2万
查看次数

启动完全独立的流程

我想从我的python脚本启动一个进程main.py,特别是我想运行下面的命令

`nohup python ./myfile.py &`
Run Code Online (Sandbox Code Playgroud)

这个文件myfile.py应该在我的主要python脚本退出之后.

另外,我希望得到main.py新流程.

我试过pid,os.spawnl*&os.exec*方法,subprocess.Popen如果我的main.py脚本退出,都会终止我的.

我可能会遗漏一些东西.

更新:我可以使用myfile.pymain.py?这是一种正确的方法吗?

a = subprocess.Popen([sys.executable, "nohup /usr/bin/python25 /long_process.py &"],\
     stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print a.pid
Run Code Online (Sandbox Code Playgroud)

如果我检查os.startfile,我看不到任何进程正在运行.

long_process.py继续打印一些文本:没有退出.

我在这里做错了吗?

python fork subprocess child-process python-2.7

16
推荐指数
3
解决办法
3万
查看次数

子进程超时失败

我想在子进程上使用超时

 from subprocess32 import check_output
 output = check_output("sleep 30", shell=True, timeout=1)
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然这会引发超时错误,但它会在30秒后发生.似乎check_output不能中断shell命令.

我可以在Python端做些什么来阻止它?我怀疑subprocess32无法终止超时进程.

python subprocess

11
推荐指数
1
解决办法
9590
查看次数

在Python中运行后台进程,不要等待

我的目标很简单:启动rsync并且不要等待.

Debian上的Python 2.7.9

示例代码:

rsync_cmd = "/usr/bin/rsync -a -e 'ssh -i /home/myuser/.ssh/id_rsa' {0}@{1}:'{2}' {3}".format(remote_user, remote_server, file1, file1)
rsync_cmd2 = "/usr/bin/rsync -a -e 'ssh -i /home/myuser/.ssh/id_rsa' {0}@{1}:'{2}' {3} &".format(remote_user, remote_server, file1, file1)
rsync_path = "/usr/bin/rsync"
rsync_args = shlex.split("-a -e 'ssh -i /home/mysuser/.ssh/id_rsa' {0}@{1}:'{2}' {3}".format(remote_user, remote_server, file1, file1))
#subprocess.call(rsync_cmd, shell=True)     # This isn't supposed to work but I tried it
#subprocess.Popen(rsync_cmd, shell=True)    # This is supposed to be the solution but not for me
#subprocess.Popen(rsync_cmd2, shell=True)   # Adding my own shell "&" …
Run Code Online (Sandbox Code Playgroud)

python subprocess popen background-process

10
推荐指数
2
解决办法
4万
查看次数

在詹金斯工作失败

这个问题可能听起来很奇怪,但我如何让工作失败?

我有一个python脚本,使用scons编译少量文件,并作为jenkins工作运行.该脚本测试编译器是否可以构建x64或x86二进制文件,如果它无法执行其中一个操作,我希望该作业失败.

例如:如果我在64位系统上运行我的脚本并且无法编译64位.我可以在脚本中做些什么可能导致失败吗?

python jenkins

7
推荐指数
2
解决办法
1万
查看次数