文章列表
 
2011-10-20 19:33
import paramiko

import multiprocessing

#多进程控制如下

        processes = [multiprocessing.Process(target=self.now_ssh, args=(...)) for ip in hostname]
        for p in processes:
            p.start()
        for p in processes:

            p.join()

#now_ssh封装了调用paramiko ssh后的一些操作
                s = paramiko.SSHClient()
                s.load_system_host_keys()
                s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
                s.connect(ip,port,username,password)

这段代码本来没有任何问题,但是当hostname多于一定数目时(10台以上?),出现了

<type 'exceptions.AssertionError'> PID check failed. RNG must be re-initialized after fork(). Hint: Try Random.atfork()

检测发现,可能是系统的并发链接数做了限制

需要修改/etc/ssh/sshd_config 里面的对外连接数

悲剧的是,这个玩意被pe给锁住了,我改不了...所以只好在代码上想办法了。

最后老老实实的每次ssh前sleep了0.1秒,然后在now_ssh里面加了try exception重试

 
2011-08-09 13:36

问题起因:

要兼容旧版本

本地有个库叫json.py
现在同目录下import json
希望不调用这个本地库而直接使用python里默认的那个json库

因为那个本地的json.py被很多其他的调用了,所以无法改名
python2.5以前是没有json这个库的

 

问题解决:

import sys

_cpath_
= sys.path[0] #获取当前路径
sys.path.remove(_cpath_) #删除
import json
sys.path.insert(0, _cpath_)
#恢复

def main():
print(json.__file__)

if __name__ == '__main__':
main()

解决方法:
sys.path[0]保存的是当前模块路径
import的规则是以sys.path做为环境路径进行搜索
 
2011-06-08 15:02

本文原创自esbat的博客,转载请注明出处

#################################

import subprocess

import os

import singal

import time

 

child = subprocess.Popen(cmd,shell=True, close_fds=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE, preexec_fn = os.setsid)$

time.sleep(360)

os.killpg(child.pid,signal.SIGINT)

 

signal.SIGINT == 2

kill -2 表示ctrl c 一个程序,vi等命令不能用kill -2终止

必须 kill -9 也就是os.killpg(child.pid,9)

#################################

 

如果需要在运行子进程时打出一些log到屏幕 请参考上一篇即时打出print的方法

 
2011-06-07 19:44
本文原创自esbat的博客,转载请注明出处

python中的print默认是换行的

想要不换行输出有两种办法:

1.print后加上","

############################

>>>print "Hello World",

############################

2.使用sys.stdout.write命令

############################

>>>sys.stdout.write("Hello World")

############################

 

但是,以上的命令在具体执行时,并不会实时显示,每次都是在换行时才把整行指令打出来.

如果要实时显示,需要在每次sys.stdout.write后面加上一行sys.stdout.flush()让屏幕输出

############################

sys.stdout.write("Hello World")

sys.stdout.flush()

sys.stdout.write("one line!")

sys.stdout.flush()

############################

 

附一段我用来控制write换行情况的代码

############################

class ChangeLine:
    NewLine = True

    @classmethod
    def write_out(self,str,typename = 0):
#   0 is "\n.....\n"
        if typename == 0:
            if self.NewLine == False:
                sys.stdout.write('\n')
                sys.stdout.flush()
            sys.stdout.write(str + '\n')
            sys.stdout.flush()
            self.NewLine = True
#   1 is "......."
        if typename == 1:
            sys.stdout.write(str)
            sys.stdout.flush()
            self.NewLine = False
#   2 is "\n......"
        if typename == 2:
            if self.NewLine == False:
                sys.stdout.write('\n')
                sys.stdout.flush()
            sys.stdout.write(str)
            sys.stdout.flush()
            self.NewLine = False
#   3 is "......\n"
        if typename == 3:
            sys.stdout.write(str + '\n')
            sys.stdout.flush()
            self.NewLine = True

############################

 

 
2011-05-31 13:38
5月27日,我们收到通知,机房和域名注册商将停止deepin.org的解析。经过一些了解,大概的原因如下:
几个月前,一位不知名的朋友写了一篇文章, 描述如何在linux deepin系统下使用内置的SSH代理脚本访问国外受限网站的配置方法。这篇文章后来又被转载到一些国外的博客上,造成有关部门认为Linux Deepin的制作目的是用来访问受限网站,最终而导致目前域名被限制访问的情况

需要说明的是,这次被停止解析域名,相当的意外。:
1.该脚本并不能提供直接访问受限网站的功能。没有自己的SSH账号,即使了解这个方法,也不可能直接用它访问国外受限网站。
2.这篇文章最初是一个不知名的用户撰写并发在自己的博客上,我们从未发表在自己的网站上,也没有对这个技术进行公开说明和宣传。
3.从技术层面上说,这个方法在任何一个Linux系统上都可以使用,所有的linux发布版网站都有提供类似技术的嫌疑(每个linux发行版都内置了SSH这个命令)。


目前我们能做的:
1.将域名和服务器放到国外,但这样一来国内用户可能未来访问和更新会比较缓慢,而且不能排除再次被干扰的情况。
2.更换网站域名和发行版域名,不再叫linux deepin,因为我们无法联系国外网站删除这些文章,也就是说linux deepin可能会被有关部门一直认为有问题。

虽然不希望一个由中国人自己做的Linux发行版不得不放到国外或者因为这么一个奇怪的原因而改名,但好像目前除了上面的办法别无他法。我们正在准备 linxudeepin.com的域名和网站,预计3天后先恢复相应的发布和资料页面,以便大家能获得后续的信息。

无论遇到什么样的困难,我们都不会放弃在中国制作一个有国际影响力的Linux主流发行版的目标.

 
   
 
 
文章分类
 
 
杂文(24)
 
 
日记(60)
 
Ubuntu(33)
 
Php(2)
 
 
 
 
   
 
文章存档
 
     
 
最新文章评论
  

回复强制性非主流:嗯,你直接发邮件加入吧。 任意邮件到subscribe+deepindev@googleg
 

回复麟麟麟:荣幸之至 esbatmop@gmail.com
 

有兴趣加邮件列表不? deepindev@googlegroups.com
 

怎么安装吧,meego1.2出来了,环境都支持meego4.7.2和qt-moblity1.2了
 

回复Firobd:你好,请参考这篇文章http://www.linuxdiyf.com/bbs/thread-183720-1-1.h
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu