您的位置:首页 > 其它

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:
由于原来例子里面没有写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 process
ssh
连接上本机以后,无法执行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")却会失败。(还没有揪出原因)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: