请参阅 PYTHONUTF8 了解详情。 -X pycache_prefix=PATH 允许将 .pyc 文件写入以给定目录为根的并行树,而不是代码树。...经过了我一段时间的分析(5秒),意识到不是错觉,一看这报错,很有规律呀: 这不就是小学的加减乘除的运算加上注释符之类的......这样 python 反弹shell 就结束了,下面就是我最喜欢的扯淡时间 用上面哪些运算符试试分离代码是否能成功 python3 -c "import base64,sys;update = base64...shell进行反弹,所以这个参数更适合于我们隐藏shell 查到资料说,python3 在引入模块的时候,是按照 sys.path 的顺序来进行查找的,我们来测试一下是不是这样的 在 /usr/lib...这个文件夹里都是 .so 文件,这个由于不是模块,所以用来劫持模块不会成功,但是我测试一下,似乎可以用相同的方法来劫持库,后续再研究,不能忘了当前的目标 继续 /usr/local/lib/python3.5
我认为运维的工作量并没有随着企业需求越来越复杂而变大,就算变大也不是靠自动化能解决的体力活。 运维自动化是给运维用的,请各位运维想想,我们的日常工作,这些年来有太大变化吗? ...看到这一段,我被他的执着蠢哭了,所谓的自动化居然是用ntpdate更新系统时间。 ...我也见过某大师写的自动化代码,朋友告诉我他的python水平只值6k——连异常都不处理,我用半瓶醋的水平仔细看了一下他的源码我真的笑出来了,每隔几行必然能看到一个os.system(“shell命令”)...事实上我uppet应用QQ群是我唯一一个没有退出的Linux技术群,而我明白自己的Python水平看复杂的代码都费力。只因为这两个技术被野风吹的最火,我用他们来说明每杆大旗下都少不了盲从的人。...我并不反对你推广你的方案,但我认为“循环调用SSH命令是一个我能接受的、可行的方案”。 我们应该减少盲从,拿起最顺手的工具去做一番事业,而不是玩赏最精美的道具却迷失了目标。
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。 ...Jython Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。 ...IronPython IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。 ...64位,范围为 -2**63 -- 2**63-1 ▷ long 长整型 (python3版本已经没有该类型了,不管多长的数,全部为int类型) 跟C语言不同,Python...'4' 8 9 就是不愿意打印'4' 9 10 就是不愿意打印'4' 10 >>> 上面的例子可以看出,出现了continue,就会跳出本次循环,但是还会跳到循环体的第一句,来判断条件是否为True
朋友弄了一个小项目,要我帮忙做下 Linux 系统运维,上线一段时间后,发现项目偶尔会挂掉导致服务不可用。...开发朋友一时之间也没空去研究项目奔溃的根因,只好由我这个运维先写一个项目进程自拉起脚本,通过 Linux 任务计划每分钟检查一下进程是否存在来避免项目挂了没人管的情况。 ?...一、检查日志 根据经验,先看一下 crontab 的日志: tail /var/log/messages 没发现相关日志,看来不是打印到了这,于是查看了下 crontab 的默认日志位置: tail /...直接执行成功,而放到 crontab 就失败,经验告诉我肯定的脚本环境变量有问题了! ②、环境变量 于是在脚本里面载入环境变量: #!...四、分析总结 Linux 系统里面计划任务,crontab 没有如期执行这是运维工作中比较常见的一种故障了,根据经验,大家可以从如下角度分析解决: ①、检查 crontab 服务是否正常 这个一般通过查看日志来检查
绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。...Jython Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。...IronPython IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。...解决方法是,在代码的首行加入以下代码,用来指定编码格式: #-*- ecoding:utf-8 -*- #这样,就能成功执行并打印出中文 “你好,世界!”了。...而如果将一个变量的值赋予给另一个变量,那么内存中还是只有一个数据值,只是将该数据指向了不同的两个变量而已。
这个示例运行向你展示了当你运行程序时程序是什么样子的。用户输入的部分以粗体显示。 我建议你自己将每个程序的代码输入到 IDLE 的文件编辑器中,而不是下载或复制粘贴。...长代码行 有些代码指令在书中太长,无法放在一行上,会换到下一行。但是这一行在你的电脑屏幕上是可以放下的,所以不要按回车键,全部在一行上输入。你可以通过左边的行号来看一个新指令何时开始。...这是如此重要,事实上,我已经添加了一个卡通企鹅来提醒你。...图 2-5:运行 hello.py 后的交互式 shell 当您输入您的名字并按下回车键时,程序将以您的名字向您问候。恭喜!您已经编写了您的第一个程序,现在是一名计算机程序员。...此时,执行已经到达代码的末尾,程序终止。恭喜!你刚刚编写了你的第一个真正的游戏! 你可以通过改变玩家获得的猜测次数来调整游戏的难度。
( ̄∇ ̄)有木有超级想小夕呢( ̄∇ ̄) 小夕在前面写了一堆纯理论和半理论的文章,不要怕,这次来一篇纯工程的tricks集合!...注意服务器版是没有图形界面的,对shell不熟悉的童鞋要尽快打好基础哦。...但是我们做深度学习的话,在服务器端大面积改代码、重量级调试的话还是不方便,毕竟服务器上没有图形界面,大部分人还是用不惯vim的,那么能不能在PC端用漂亮的编辑器修改代码,将修改结果实时的同步到服务器端呢...多开发环境管理 如果不幸你的GPU服务器并不是你一个人用,那么这时多人(尤其是混入小白多话)经常把服务器默认的python环境弄的乌烟瘴气,比如有人用python2,有人用python3,有人用tensorflow1.3...对于前台已经执行起来的任务,可以ctrl+z来丢进后台(丢后台时stop了的话用bg让其run起来)。
前言 即使您编写了清晰可读的代码,即使您是非常有经验的开发人员,奇怪的bug也不可避免地会出现,您将需要以某种方式调试它们。很多人使用一堆print语句来查看代码中发生了什么。...这种方法远不是理想的,有更好的方法可以找出代码的错误所在,本文将探讨其中一些问题和应对方法。 ? 日志是必须的 如果在编写应用程序时没有设置日志记录,那么您最终会后悔的。...使用-i参数运行应用程序(python3 -i app.py)会导致程序一退出就启动交互式shell。此时,您可以检查变量和函数。...堆栈跟踪 假设您的代码是运行在远程服务器上的Flask或Django应用程序,在那里您无法获得交互式调试会话。...这个技巧更多的是关于效率而不是调试。能够跳过一些不必要的步骤,使您的工作流程更快、更高效总是很好的。一般来说,不时地重新加载模块是一个好主意,因为它可以帮助您避免调试已经被修改了很多次的代码。
“你知道,如果你有打印输出的原始文件,我可以写一个程序来做,”我的室友告诉他们,当他看到他们坐在地板上,文件散落一地。...这两个密码被比较 ➍,如果它们相同,程序将访问授权打印到屏幕 ➎。接下来,程序检查密码是否是12345➏,并提示这个选择可能不是密码 ➐ 的最佳选择。...Python 这个名字来自超现实主义的英国喜剧组合 Monty Python,而不是来自蛇。...否则,您有一个 32 位版本,但以下是如何确定的方法: 在 Windows 上,选择开始 -> 控制面板 -> 系统,检查系统类型是 64 位还是 32 位。...举个例子,这里有一些我上传的代码:pastebin.com/SzP2DbFx和asweigart/6912168。 解释你已经尝试做了什么来解决你的问题。
但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Object file)而不是前面说的可执行文件。...而像VB6(或者以前版本)、C#这样的语言,虽然表面上看生成的是.exe可执行程序文件,但VB6编译之后实际生成的也是一种中介码,只不过编译器在前面安插了一段自动调用某个外部解释器的代码(该解释程序独立于用户编写的程序...,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是...我回答说Shell是个脚本语言,但Python不只是个脚本语言,能做的事情更多,然后又有钻牛角尖的人说完全没必要学Python, Python能做的事情Shell都可以做,只要你足够牛B,然后又举了用Shell...十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示) 2、最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit)
简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言,Python官方网站 。...可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。...代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。...PyPy Python实现的Python,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上,将Python的字节码再动态编译成机器码(非解释),它的目标是执行速度。...5、Python环境安装 Windows 从Python官方网站下载最新Windows版本,我的系统是64位的,所以我选择64位的安装包。
Python 的确是我喜爱的编程语言,用它编程真的让我感到快乐。它让我的大脑感到快乐,它和伪代码是如此契合,以至于用它来工作能让人真正感到愉悦。...还是在那家公司里,我们使用 JSON 格式(顺便说一下,这是个很好的想法)来存储我们的日志文件,一位同事写了一个名为 logcat 的 Python 程序,用来解析日志文件和输出标准的柱状图报告,这个程序有许多不错的功能特性...最后一个例子,我编写了一个简单的程序用于搭建一个 Web 界面。我觉得应该使用 Python,但是这样做的话,我需要找出如何利用 Python 的类库来为 Web 页面提供服务的办法。...引用我哥们的一段话,“单元测试是一种冗长且易于出错的方法,它试图挽回由于缺乏静态类型注解而失去的价值,但却以一种笨手笨脚的形式出现,因为它和实际业务代码本身是完全分离的。”...作者:Qingniu 链接:https://www.jianshu.com/p/8e4ca0b1ac64 來源:简书
原文:http://inventwithpython.com/beyond/chapter8.html 虽然 Python 是我最喜欢的编程语言,但它也不是没有缺陷。...考虑这样一段代码,在这段代码中,我们想要从列表中移除任何不是'hello'的字符串。...所以你不应该觉得创建一个新的列表而不是在迭代时修改原来的列表是在浪费内存。即使您的列表修改代码看似有效,它也可能是需要很长时间才能发现和修复的细微错误的来源。...如果需要使用列表或字典作为默认参数,Python 风格的解决方案是将默认参数设置为None。然后编写代码来检查这一点,并在调用该函数时提供新的列表或字典。...一个更好的主意是设置默认参数None,然后添加代码来检查None,并在调用函数时创建一个可变对象。 一个微妙的问题是在一个循环中用+操作符将几个较小的字符串连接起来。对于少量迭代,这种语法很好。
在多数情况下,以上五种写法都是等价的。但是,写过程序的人都知道:“少数情况”里往往隐藏着意想不到的坑。 如果系统的默认 shell 不是 bash 怎么办?...带上shellcheck 好了,现在我已经有了三行(样板)代码,具体的业务逻辑一行都没写呢。是不是该开始写了? 且慢!工欲善其事,必先利其器。...这次,我就介绍一个 shell 脚本编写神器:shellcheck 说来惭愧,虽然写了几年 shell 脚本,有些语法我还是记不清楚。这时候就要依仗 shellcheck 指点一下了。...由于无论正常退出抑或异常退出,所注册的函数都能得以调用,在需要调用一个清理函数的场景下,我都是用它注册清理函数,而不是简单地在脚本结尾调用清理函数。...要想减缓脚本代码的腐烂速度,需要在编写的时候辨清哪些是会变的依赖、哪些是脚本正常运行所不可或缺的。要有适当的抽象,编写可变更的代码;同时要有防御性编程的意识,给自己的代码一道护城河。 8.
其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的; 代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的...Jython Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。...,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255...十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数,也就是一个字节(8位进制可以用两个16进制表示) 2、最早规定ASCII字符集采用的就是8bit(后期扩展了,但是基础单位还是8bit),...8bit用2个16进制直接就能表达出来,不管阅读还是存储都比其他进制要方便 3、计算机中CPU运算也是遵照ASCII字符集,以16、32、64的这样的方式在发展,因此数据交换的时候16进制也显得更好 4
一开始有很多错误的怀疑,比如怀疑 hping3 需要 TTY[2] 才能执行,以为 hping3 需要使用绝对路径等…… 但是想想同样的代码在本地可以运行正常,就应该不是这些原因。...一个验证就是,我去应用运行的环境中开一个 Python 的 REPL 执行这段代码,是能正常得到结果的。在应用运行的环境直接运行 hping3 命令,也是没有问题的。...到这里,其实已经花费了很多时间了,得到的事实有: 容器里面执行 hping3 是完全没有问题的,权限是足够的 直接使用 Python3 的 REPL 执行这段代码也是没有问题,代码逻辑是对的 到这里你能猜到问题出在哪里了吗...不知道怎么结束的。 但是往上看,有一段代码获取了当前的 pid,然后给自己发送了 SIGALRM。再往前,发现注册了 SIGALRM 的 handler. SIGALRM 是什么呢?...至于修改呢,我打算直接用 socket.connect 来测量 tcp 的连接时间。因为 TCP 是 3 次握手的,但是对于客户端来说基本上只花费了一个 RTT 的时间。
之前提到的所有的反弹shell的方法都有一个共同的缺点:明文传输 我们传输的命令不被安全软件拦截才怪 本来我是打算base64编码进行测试的,但是失败了,这里有个问题需要以后去深究,这里仅仅抛出来 nc...工作流程,如何打包,如何传输,但是对于内部使用的算法怎么算的不是很理解,所以今天特意买了两本书看一看,过一段时间就会到了,不过不影响 openssl 加密我们的流量 这次的加密在某一些层面违背了我之前的原则...将这两个文件复制到我们的攻击机上 我一般都喜欢 python3 -m http.server 9000 来开启一个web服务进行下载,但是这样似乎动静太大了,安全软件不干掉我们都对不起他自己 所以我们使用...成功反弹shell,肯定是最近熬夜多了,脑子不灵光了 【 python3 】 除了 openssl 工具来进行加密连接,我还有其他的招,没错就是 python3 , 既然 python3 可以使用 -c...报错原因是 str没有decode这个方法,很明显,是因为 Python 3 中str 对象没有decode方法了,所以我们变型,结合之前我们的 python3 反弹shell的 payload python3
我们分别从代码(code)和标记语言(Markdown)来介绍: 代码: Python 代码 Shell 指令 Magic 指令 + 各种骚操作 标记语言: 字体(font) 链接(link...2 Code 类操作 2.1 Python 代码 以检查系统和 Python 常用包的版本为例。...首先在三个 Cell 运行代码,注意下图左边的 In 和 Out 标注。并不是每个 In 都对应 Out,有些语句没有输出。 ? 打印 In 发现是个列表,有 5 个元素。...在 Code Cell 中可用 Python 编程,还可以执行 Shell 命令和 Magic 命令,还可以玩一下用下划线 _ 和 In/Out 的骚操作。...啥都记不住我建议你不要编程了。 用 或者 * 来慢慢查出函数的完整名称。 用 ?或 ?? 来查看这个函数的 docstring。
而 Docker 的镜像提供了除内 核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码 在我机器上没问题啊” 这类问题。...开发人员 可以通过 Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系 统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署...Docker 可以在 很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运 行结果是一致的。...解释器 # -c 运行一段shell命令 # "while true;do echo 正在运行; sleep 1;done" 在linux后台,每秒中打印一次正在运行 docker ps...格式去运行命令,会读取$name指令,而exec格式是仅仅的执行一个命令,而不是shell指令 cat Dockerfile FROM centos ENV name Docker
而 Docker 的镜像提供了除内 核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 “这段代码 在我机器上没问题啊” 这类问题。...开发人员 可以通过 Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系 统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署...5、更轻松的迁移 由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在 很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运 行结果是一致的。...解释器 # -c 运行一段shell命令 # "while true;do echo 正在运行; sleep 1;done" 在linux后台,每秒中打印一次正在运行 docker ps...格式去运行命令,会读取$name指令,而exec格式是仅仅的执行一个命令,而不是shell指令 cat Dockerfile FROM centos ENV name Docker
领取专属 10元无门槛券
手把手带您无忧上云