Fabric-Windows环境-学习笔记
2015-08-28 14:18
204 查看
软件环境机器A:Win7x64 (192.168.8.8):python2.7 + fabric 最新djangoFreeSSHd (SSH用户名为:administrator,NT认证,该windows用户密码为abc)putty(验证ssh连接)机器B:linuxgit服务器机器C:linuxssh验证用------------------------------------------------------fab官网教程:
http://docs.fabfile.org/en/1.10/tutorial.html
1、fab官网教程用到了一个django项目因为手头没有现成的django项目,所以只好用了最新django官方教程,
https://docs.djangoproject.com/en/1.8/intro/tutorial01/
先搭建了一个。django官方教程写的很好,很容易上手,很容易就运行起来了。只是fab官网用到的tests.py,需要自己写一两个简单的testcase因此,fab官网教程中,所有命令用到的my_app之处都需要改为polls2、fab deploy连接本地服务器遇到了一系列问题:问题1:
http://stackoverflow.com/questions/1469431/why-am-i-receiving-a-low-level-socket-error-when-using-the-fabric-python-library
问题2:
http://stackoverflow.com/questions/22504784/fabric-cannot-execute-remote-command-on-windows http://stackoverflow.com/questions/14863659/paramiko-not-executing-command-or-shell-python
问题3:with cd()语句 不工作:code_dir="H:\mydjango"#code_dir="/h/mydjango"with cd(code_dir):run(“dir”)结果发现,列出的总是C:\windows\system32的内容,搜了一圈,也没有找到解决方案只好放弃with cd(),改为直接执行run("H:" + " && " + "cd " +code_dir+ " && " + “dir")这样才列出了正确的内容之后,deploy可以登录127.0.0.1了,但是执行git clone命令,总是报错ssh有问题继续发现,原来在win7下,以正常方式执行git命令时,git bash自带的ssh用到了~/.ssh/id_rsa.pub和id_rsa文件,其中pub文件早就预先提交给了gitlab服务器而ssh登录本机后,其实不再是正常方式执行git命令,而是到了freesshd自己的小环境,所以用的是fresshd自己带的ssh,可是似乎freesshd自带的ssh并没有读~/.ssh/id_rsa.pub和id_rsa文件,但是它自己的配置也没有地方做相关配置,它自己的配置目录配的只有它自己的私有钥匙。所以,我觉得freesshd似乎功能不全,或者是我理解不到位。所以只好放弃FreeSSHd这条路。因而改用OpenSSH for windows遇到了一些莫名其妙的问题:run某些命令时,命令最后莫名其妙地多加了个空格(0x20字符),导致命令执行失败。(还没有揪出原因)OpenSSH 的配置目录下可以设置公有钥匙,因此以putty登录本机,执行ssh -T git@gitlab.com,可以执行成功;但是执行fab deploy内的run("ssh -T git@gitlab.com")却会失败。(还没有揪出原因)
http://docs.fabfile.org/en/1.10/tutorial.html
1、fab官网教程用到了一个django项目因为手头没有现成的django项目,所以只好用了最新django官方教程,
https://docs.djangoproject.com/en/1.8/intro/tutorial01/
先搭建了一个。django官方教程写的很好,很容易上手,很容易就运行起来了。只是fab官网用到的tests.py,需要自己写一两个简单的testcase因此,fab官网教程中,所有命令用到的my_app之处都需要改为polls2、fab deploy连接本地服务器遇到了一系列问题:问题1:
由于原来例子里面没有写env,所以会提示连接哪个host,我输入了localhost,结果报错:
Low level socket error connecting to host localhost排查过程:(1) 本机用putty连localhost没有问题(2) 登录机器C(linux),执行ssh 192.168.8.8时,会尝试用机器C的当前用户名连接,所以无法成功因此,改为执行ssh administrator@192.168.8.8,但是还是连接不上想到也许是防火墙问题,所以把python.exe, fab.exe,freesshd 以及tcp 22端口都通过防火墙,这时,机器C上ssh连接192.168.8.8,ok了,但是在本机上,fab代码仍然报底层
Low level socket error,问题仍然存在(3)联想到以前有的web应用也发生过不认localhost,只认127.0.0.1,或者反过来的情况,所以fab代码中,开头部分增加env定义,不用localhost,而用127.0.0.1env.hosts=['administrator@127.0.0.1:22']env.user='administrator'env.password='abc'问题1解决。参考资料:
http://stackoverflow.com/questions/1469431/why-am-i-receiving-a-low-level-socket-error-when-using-the-fabric-python-library
问题2:
Unable to execute command or shell on remote system: Failed to Execute processssh连接上本机以后,无法执行windows命令,报以上错误这个问题,前人经过细致研究后的结论是,在windows上,默认fab也试图执行bash命令,所以需要重定义shell因此在fab代码中,开头部分继续增加env.shell="cmd /c"问题2解决。参考资料:
http://stackoverflow.com/questions/22504784/fabric-cannot-execute-remote-command-on-windows http://stackoverflow.com/questions/14863659/paramiko-not-executing-command-or-shell-python
问题3:with cd()语句 不工作:code_dir="H:\mydjango"#code_dir="/h/mydjango"with cd(code_dir):run(“dir”)结果发现,列出的总是C:\windows\system32的内容,搜了一圈,也没有找到解决方案只好放弃with cd(),改为直接执行run("H:" + " && " + "cd " +code_dir+ " && " + “dir")这样才列出了正确的内容之后,deploy可以登录127.0.0.1了,但是执行git clone命令,总是报错ssh有问题继续发现,原来在win7下,以正常方式执行git命令时,git bash自带的ssh用到了~/.ssh/id_rsa.pub和id_rsa文件,其中pub文件早就预先提交给了gitlab服务器而ssh登录本机后,其实不再是正常方式执行git命令,而是到了freesshd自己的小环境,所以用的是fresshd自己带的ssh,可是似乎freesshd自带的ssh并没有读~/.ssh/id_rsa.pub和id_rsa文件,但是它自己的配置也没有地方做相关配置,它自己的配置目录配的只有它自己的私有钥匙。所以,我觉得freesshd似乎功能不全,或者是我理解不到位。所以只好放弃FreeSSHd这条路。因而改用OpenSSH for windows遇到了一些莫名其妙的问题:run某些命令时,命令最后莫名其妙地多加了个空格(0x20字符),导致命令执行失败。(还没有揪出原因)OpenSSH 的配置目录下可以设置公有钥匙,因此以putty登录本机,执行ssh -T git@gitlab.com,可以执行成功;但是执行fab deploy内的run("ssh -T git@gitlab.com")却会失败。(还没有揪出原因)
相关文章推荐
- Kinect开发教程:利用OpenNI进行手势识别
- 关于Linux下ifconfig -a eth0无法获取Ip的解决办法
- listview1
- mysql数据库优化 pt-query-digest使用
- Android中屏幕事件触发和消费流程
- HALCON初步:HDevelop导出C++程序到VS 2013
- xcode error:no such file or directory prefix.pch
- #define 的一些基本用法
- 在代码中,插入数据到数据库时,如果不使用事务,将会导致速度极慢
- Kail Linux渗透测试教程之Recon-NG框架
- 身份证号码验证算法 javascript实现
- Cocos2D-X设计模式:单例模式
- 【深入理解JAVA虚拟机】之运行时数据区域
- codeforces 222C C. Reducing Fractions(数论+构造)
- COGS 992 宝物筛选 裸多重背包
- radio/checkbox/select使用JQurey的常见操作
- How Hash Algorithms Work
- IOS消息转发机制
- QT 创建子窗体
- java之学习多线程(一)