博文

使用Python发邮件(顺便写了一个小工具以方便实验室服务器运维)

前言: 命令行方式发邮件是非常重要的一个功能,搞过服务器运维的同学们肯定深有感触。如果一台服务器的 ip 设置为自动分配,服务器每次重启都会改变 ip ,经常去机房查ip是一件非常抓狂的事情。我今天参考了一些资料学习了一下 sendmail ,写了个小脚本,支持发送图片/附件/html等,可以用来发送日志等。 源代码在这里: https://github.com/the0demiurge/Notes/blob/master/Languages/Python/sendmail/sendmail.py 我基于这个函数做了一个自动获取IP(ifconfig)和服务器日志(dmesg)的小脚本,在这里: https://github.com/the0demiurge/Notes/blob/master/Linux/Server_Maintenance/sendmail.py 大致的用法: 只需要构造三个字典变量: sender: 记录发送者的信息,包括smtp服务器地址(比如qq,163什么的一般都会提供,不过需要在设置里面开启smtp才行) receivers: 记录收邮件的人的信息,可以指定多个邮件接收者 mail: 定义邮件的内容,包括附件等信息。 配置示例: sender = { ' address ' : ' sender@domain.tld ' , ' nickname ' : ' My Name ' , ' password ' : ' password ' , ' smtp_server ' : ' smtp.domain.tld ' , ' smtp_port ' : 465 , } receivers = [( ' Your Name ' , ' receiver@domain.tld ' )] mail = { ' content ' : ' Email Content ' , ' content_html ' : ...

[SOLVED] Supermicro cannot connect to VGA video port or iKVM

图片
Error Message: iKVM doesn't support add-on VGA device.  Please change the D-SUB connector to Add-on VGA device… TL;DR: Go HERE  and download Supermicro IPMI Utilities and install on your own PC Connect your server to the network (NOTICE: YOU MAY HAVE MORE THAN ONE NETWORK PORT, AND IF YOU DO NOT KNOW WHICH PORT SHOULD CONNECT TO THE NET, CONNECT THOSE ALL), power on and press "DEL" during startup until that error message come out There will be an IP showing on screen, keep it in your mind Go to your own PC, enter that IP on your web browser, if  you see a webpage below, go to next You may log in and change default username and password. The default username and password are both "ADMIN" Run IPMIView (downloaded at STEP 1). If you are using Windows, it's easy, and go to next step. In my PC (Ubuntu), you can just type:     tar xvaf IPMIView_2.13.0_build.170504_bundleJRE_Linux_x64.tar.xz     cd IPMIView_2.13.0_build.1705...

免费爬墙网站项目(ShadowSocksShare)开发简记

  今年(2017)年暑假,我本科刚刚毕业,保研到本校读研。这个暑假,跟同实验室的师兄聊天的时候聊到爬虫,起了一点兴趣,就做了一个小项目玩了玩,从某些网站爬到了一些漫画看。同样是这个夏天,本来我的首席上谷歌方法(Hosts)失效了,迫使我到处寻找其他免费、不限量科学上网方法,最终选定使用SSR。   最开始,我写了一个Python脚本,使用qrcode库,可以将网上爬到的ss帐号变成二维码,这样就不需要手动输入服务器信息了,真的很方便。可是好东西只有我自己用,心里过意不去,便想了好多方法来分享我找到的帐号,以便大家都能顺利地访问谷歌。最开始打算用微信公众号自动分享,或者用微信小程序。在一个周末,我便申请了微信开发平台,创建了一个微信公众号。看官方教程发现微信小程序需要用到javascript,而使用微信公众号自动发布新爬到的ss帐号需要web服务器。后来一想,既然js和web我都不会,那我还是学着做一个网站比较好,不必依托于微信。   说到做到,在某个周日下午,我阅读Flask文档和W3CSchools的HTML教程,以及网上Flask的例子,做出了本项目的最初版本。后来,为了寻找免费服务器托管我的项目,我先后找到了OpenShift和Heroku,并学习了一下两家服务器的使用管理方法,将网站托管到了OpenShift,加入了许多其他网站(因为最初的那个网站加入了反爬措施,我暂时不想用太多精力处理反爬)。为了处理一些难以定位的Bug,和一些莫名其妙的异常,我使用了大量try(当然这并不是一个良好的方案)和logging输出日志,通过阅读日志定位并解决掉了服务器稳定性的问题。当访问量增加,我又学着用了一下多线程threading和并发爬取数据multiprocessing,重构代码,以及最后稍微学习了一点点shadowsocks的源码。   看到自己GitHub加星我心里很是高兴,毕竟是第一个比较受关注的项目;网站上加了个捐款链接也只是放着玩,没想到还真有不少人捐款,哈哈:)知道有这么多人使用我的小项目,我也使用了大量时间进行维护、改Bug、增加功能、改进UI。收获是对html和javascript熟悉了不少,后来做数据分析需要调用百度地图API之类的就比较轻松了:)建站的时候也有了不少收获,理解了用户、性能、运维、s...

2019年5月16日:Linux上国产第三方软件指南

图片
2019年5月16日更新:QQ新选择 在AUR上翻来翻去,发现了比之前推荐的还好用的TIM,叫deepin.com.qq.office。这个是 wszqkzqk移植的 deepin-wine软件系列之一 ,经过测试,可以在xfce4桌面下完美运行。同样的,他百度网盘等软件也可以试试。 基于这个发现,我使用deepin-wine运行红警发现居然也可以完美运行。之前使用源里面的wine运行尤里的复仇总是出现BadWindow错误,使用这个deepin-wine就没有任何问题了。 2018年1月31日更新:出现许多选择 最近发现QQ和微信已经有了好几种非常优秀的选择,推荐给大家。顺便感慨一下,AppImage发展得确实越来越好了,期待以后有更大的影响力。 1. QQ/TIM: https://github.com/askme765cs/Wine-QQ-TIM 基于AppImage,加上可执行权限,直接用鼠标点开一般就行。TIM性能还很差,但QQ很完美 2. 微信: electronic-wechat :和上面那个微信比起来,还是上面那个微信略胜一筹(wewechat已经封号,看来只有这个能用了) 3. QQ音乐: coco-music :比较简单,也算够用 4. 网易云音乐: ieaseMusic :自称最好的网易云音乐客户端,确实非常好看。目前bug有点多,但是不太影响使用,外貌协会专用 附录:AppImage资源 GitHub: AppImageKit AppImage官方网站 Linux游戏站 AppImage中文论坛 2017年10月16日:今天TM2013突然无法使用及应对方案 在网上一查,发现腾讯说今年九月三十号就不再支持TM了。 网上其他上QQ的办法也有很多,包括Wine TIM、虚拟机(VirtualBox/KVM),也有Crossover的QQ8.9,还有Longene团队后来开发的新版QQ(有deb包)。 Longene提供的deb包经常CPU占到100%,其他方法也很麻烦。所以我的选择是: 不用QQ,改用微信,安装好Google-Chrome之后可以用 这个小脚本 开启微信网页版。 把这个小脚本放入$PATH里面,如果用...

CharlesTermux发布,谈谈命令行神器Termux

最近我的平板被我重置了,发现重新安装好多包好麻烦,所以弄了一个和 CharlesScripts 一样的东西,区别在于这里面功能减少了一些,所以可以写安装脚本了。里面做了一个一键安装脚本,直接一键用上我的配置。 网址在这里: https://github.com/the0demiurge/CharlesTermux Termux简介 Termux有点像一种Linux发行版(当然不是),使用apt作为包管理器,只支持很有限(却很够用)的部分软件,支持ssh(或者作为ssh服务器),可以用python写代码(虽然好多库都装不上),可以写c语言(有clang编译器和gcc,当然gcc要费点力气才装的上),甚至texlive和graphviz都有。 如果出差的话,可以用安卓平板做紧急开发了,配上realvnc,加上罗技的k380蓝牙键盘,能作为超级本的廉价替代品了。 题外话,上个学期我跨校区上课的时候,用它写论文,很给力。 部署方法 运行命令: apt update;apt install -y curl;bash -c "$(curl -fsSL https://git.io/vdUkk)" 功能 自动解决powerline字体等问题,安装fish,omf,tmux,ipython并配置主题,添加源,可以用apt装scipy,numpy,octave等。 可以自动备份安装列表,fork本项目之后可以将你自己维护的列表上传到自己的github。 关于快捷键 我常用的是以下几个功能: 音量键+和Q一块按,会出现一条常用按键。  把这个黑条向左滑,会出现一个输入框,便于粘贴和编辑。 把屏幕向左/向右滑动可以切换终端

[已失效] OpenShift v3 如何自定义域名

图片
经过好几天的探索找到了问题的解决办法,例子请看我的网站 ss.pythonic.life 用一句话来说,就是在 OpenShift 的后台增加一条路由,指向你的域名。 具体步骤: 在选择网页界面登陆之后 Open Web Console,选择你的项目 在左侧选择 Applications,选择 Routes 3. 选择右上角的 Create Route,把 Hostname 改成你想用的域名就可以了 4. 在你的域名提供商设置好 CNAME 记录,其中目标为 OpenShift 默认的域名 如果我的回答帮到了你,不妨 Star/Fork/Code Review 一下 这个我放在 OpenShift 上的小网站项目

深度学习服务器使用指南(三):如何让终端里面的任务一直运行

简介: 如果你用ssh连到远程服务器跑任务,如果连接断开或者本地电脑关机,那这个任务进程是会被kill掉的。为了避免这种问题,我将在这里介绍3个方法。 1. ssh 在上一篇指南里提了一下,用ssh的T参数: ssh user@host -T "command" 可以提交一个命令之后断开连接,在服务器开一个进程一直跑任务,用起来当然不是很方便,而且有的软件也不支持这么提交,但是不需要配置或者安装特殊的软件。 2. vnc 在第一篇指南中配置好 vnc 之后,可以在 vnc 里面进行各种操作,事后断开 vnc 的连接也没关系。当然,当 vnc 服务器关闭的时候,之前打开的所有软件包括任务都会被 kill 。 3. tmux 当你只想用ssh连接服务器,可以使用 tmux 进行操作。 tmux 可以随意断开连接,再重新连回去,类似于 vnc 吧,优点在于只需要终端操作。     操作指南: 启动tmux:$tmux 断开连接:Ctrl+b, 按完组合键之后按d 重新连接:首先,输入 tmux ls 查看已经打开的会话;找到想要连接的会话之后输入 tmux attach -t <会话名称> 就连回去了。其中,第一个会话的会话名称为 “0”, 那么直接 tmux attach -t 0 就能连接回来第一个会话,其他的以此类推。

此博客中的热门博文

最方便的电子词典库+macOS支持

MacBook日文键盘四种输入模式输入法切换(同样适用于其他布局的键盘)

[SOLVED] Supermicro cannot connect to VGA video port or iKVM