!メールクライアント SMTP import smtplib server = smtplib.SMTP('localhost') fromaddr = 'xxx@xxx.xxx.xxx' toaddr = 'yyy@yyy.yyy.yyy' # msg = 'test message' msg = MIMEText(test.encode(chset),'plain',charset) server.sendmail(fromaddr, toaddr, msg) server.quit() !SMTP 2 #!/bin/env python # -*- coding: utf-8 -*- import smtplib from email.MIMEText import MIMEText from email.Header import Header from email.Utils import formatdate def send(from_addr, to_addr, msg): # SMTPの引数を省略した場合はlocalhost:25 s = smtplib.SMTP('localhost') s.sendmail(from_addr, [to_addr], msg.as_string()) s.close() def create_message2(from_addr, to_addr, subject, body, encoding): # 'text/plain; charset="encoding"'というMIME文書を作ります msg = MIMEText(body, 'plain', encoding) msg['Subject'] = Header(subject, encoding) msg['From'] = from_addr msg['To'] = to_addr msg['Date'] = formatdate() return msg if __name__ == '__main__': from_addr = 'spam@example.com' to_addr = 'egg@example.com' msg = create_message2(from_addr, to_addr, u'テスト', u'本文', 'ISO-2022-JP') send(from_addr, to_addr, msg) !Mail POP import getpass, poplib M = poplib.POP3('localhost') M.user(getpass.getuser()) M.pass_(getpass.getpass()) numMessages = len(M.list()[1]) for i in range(numMessages): for j in M.retr(i+1)[1]: print j !MAIL imap4 import getpass, imaplib M = imaplib.IMAP4('localhost') M.login(getpass.getuser(), getpass.getpass()) M.select() typ, data = M.search(None, 'ALL') for num in data[0].split(): typ, data = M.fetch(num, '(RFC822)') print 'Message %s\n%s\n' % (num, data[0][1]) M.close() M.logout() ! HTTPサーバ import BaseHTTPServer import SimpleHTTPServer addr = ('127.0.0.1', 8000) Server = BaseHTTPServer.HTTPServer handler = SimpleHTTPServer.SimpleHTTPRequestHandler httpd = Server(addr, handler) httpd.serve_forever() !HTTPクライアント import httplib h = httplib.HTTPConnection('www.yahoo.com') h.request('GET', '/index.html') r = h.getresponse() if r.status == httplib.OK: data = r.read() print data print 'Status=', r.status ! CGIサーバ import CGIHTTPServer import BaseHTTPServer import SimpleHTTPServer def serveForever(addr, HandlerClass = CGIHTTPServer.CGIHTTPRequestHandler, ServerClass = BaseHTTPServer.HTTPServer): HandlerClass.protocol_version = 'HTTP/1.0' httpd = ServerClass(addr, HandlerClass) sa = httpd.socket.getsockname() print "Serving HTTP on %s:%d" % (sa[0], sa[1]) httpd.serve_forever() if __name__ == '__main__': serveForever(('127.0.0.1', 8000)) ---- !TCPソケット(サーバ) import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind(('127.0.0.1', 12345)) sock.listen(1) try: while True: (conn, sa) = sock.accept() msg = conn.recv(8192) print msg conn.close() except socket.error, e: print 'Error: %s' % e !TCPソケット(サーバ/その2) import SocketServer class Handler(SocketServer.StreamRequestHandler): def handle(self): while True: line = self.rfile.readline() if len(line) == 0: return self.wfile.write(line) server = SocketServer.TCPServer(('127.0.0.1', 12345), Handler) print 'listening:', server.socket.getsockname() server.serve_forever() !TCPソケット(クライアント) import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) try: r = sock.connect(('127.0.0.1', 12345)) sock.send('test message') except socket.error, e: print 'Error: %s' % e ! UDP socket Just this: import socket sock = socket.socket(socket.AF_INET, # Internet socket.SOCK_DGRAM) # UDP sock.bind((IP,PORT)) To send: sock.sendto(message,(IP,PORT)) To receive: sock.recvfrom(1024) The 1024 displays the buffer size. There are not other changes necessary as far as the socket part !DNS クライアント import dns.name import dns.message import dns.query ### pip install dnspython ( python2 ) ### $ pip install dnspython3 ( python3 ) domain = 'www.yahoo.com' nameserver = 'set your dns-server ip address' domain = dns.name.from_text(domain) if not domain.is_absolute(): domain = domain.concatenate(dns.name.root) request = dns.message.make_query(domain, dns.rdatatype.ANY) response = dns.query.udp(request,nameserver) print response.answer ! Directy size check #!/usr/bin/env python # coding: utf-8 import os __all__ = [ 'disk_free', 'get_avail_size', 'get_total_size', 'get_used_size'] def disk_free(path): u""" path の総容量、使用量、(現ユーザーの)使用可能容量を返す """ s = os.statvfs(path) avail = s.f_bsize * s.f_bavail total = s.f_bsize * s.f_blocks free = s.f_bsize * s.f_bfree used = total - free return total, used, avail def get_total_size(path): return disk_free(path)[0] def get_used_size(path): return disk_free(path)[1] def get_avail_size(path): return disk_free(path)[2] def memory_free(): """ Get node total memory and memory usage """ with open('/proc/meminfo', 'r') as mem: ret = {} tmp = 0 for i in mem: sline = i.split() if str(sline[0]) == 'MemTotal:': ret['total'] = int(sline[1]) elif str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'): tmp += int(sline[1]) ret['free'] = tmp ret['used'] = int(ret['total']) - int(ret['free']) return ret def proc_mounts(): """ Get /proc/mounts """ with open('/proc/mounts', 'r') as mnt: ret = {} tmp = 0 for i in mnt: sline = i.split() if 'dev' in str(sline[0]) : if sline[1] == '/': if sline[1] == '/home': if sline[1] == '/usr': if sline[1] == '/var': else: print sline[1] return ret def _test(): # print disk_free(r'.') # print memory_free() print proc_mounts() if __name__ == '__main__': _test() !color #!/usr/bin/env python # -*- coding: utf-8 -*- # author:Atsushi Sakai # license: MIT def Print(string, color, highlight=False): u""" Colored print colorlist: red,green,yellow,blue,magenta,cyan,white,crimson """ end="\033[1;m" pstr="" if color == "red": if highlight: pstr+='\033[1;41m' else: pstr+='\033[1;31m' elif color == "green": if highlight: pstr+='\033[1;42m' else: pstr+='\033[1;32m' elif color == "yellow": if highlight: pstr+='\033[1;43m' else: pstr+='\033[1;33m' elif color == "blue": if highlight: pstr+='\033[1;44m' else: pstr+='\033[1;34m' elif color == "magenta": if highlight: pstr+='\033[1;45m' else: pstr+='\033[1;35m' elif color == "cyan": if highlight: pstr+='\033[1;46m' else: pstr+='\033[1;36m' elif color == "white": if highlight: pstr+='\033[1;47m' else: pstr+='\033[1;37m' elif color == "crimson": if highlight: pstr+='\033[1;48m' else: pstr+='\033[1;38m' else: print("Error Unsupported color:"+color) print(pstr+string+end) if __name__ == '__main__': Print("Red","red") Print("Green","green") Print("Yellow","yellow") Print("Blue","blue") Print("Magenta","magenta") Print("Cyan","cyan") Print("White","white") Print("Crimson","crimson") Print("Highlited Red","red",highlight=True) Print("Highlited Green","green",highlight=True) Print("Highlited Yellow","yellow",highlight=True) Print("Highlited blue","blue",highlight=True) Print("Highlited Magenta","magenta",highlight=True) Print("Highlited Cyan","cyan",highlight=True) Print("Highlited Crimson","crimson",highlight=True) ! Passwd https://docs.python.jp/3/library/pwd.html