21
2016
12

linux说出自己的IP地址(文字转换语音)

Linux服务器没有显示器时如何控制它?对,就是ssh,但是ssh需要IP地址啊,LinuxIP地址是多少?这个问题问的好,目前大约有这样几种解决方案:

获取到IP地址后将地址发到邮箱:前提是Linux能上网

原理很简单,当Linux获取到IP地址之后,让它自己说出自己的IP地址就是了。 

获取IP地址比较容易,ifconfig之类的命令大家也应该听说过。关键是“说”! 

其实这个问题也挺简单的,去网上下载09的数字发音,然后对应着获取的IP地址,依次按顺序读出来就行啦。 Linux里面是有播放器的,omxplayer就是一个。其他的播放器比如mpg123也可以的。 

你需要做的,就是让Linux开机自动执行这个程序,然后找个耳机插到Linux服务器的音频孔里面(表告诉我你木有耳机), 竖起你的耳朵,仔细听就是。

-----------------------------以下是python脚本代码-----------------------------

#!/usr/bin/env python

# coding=utf-8


import os

import sys

import time

import socket

import subprocess


voice_path = os.path.join(sys.path[0], 'voice')

player = ["omxplayer", "mpg123", "mpg321", "mplayer"]



def getLocalIP():

    ip = None

    try:

        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        s.connect(('114.114.114.114', 0))

        ip = s.getsockname()[0]

    except:

        name = socket.gethostname()

        ip = socket.gethostbyname(name)

    if ip.startswith("127."):

        cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''

        a = subprocess.Popen(

            cmd,

            shell=True,

            stdout=subprocess.PIPE,

            stderr=subprocess.PIPE)

        a.wait()

        out = a.communicate()

        ip = out[0].strip().split("\n")  # 所有的列表

        if len(ip) == 1 and ip[0] == "" or len(ip) == 0:

            return False

        ip = "完".join(ip)

    return ip



def getFilePath(filename):

    return os.path.join(voice_path, "%s.mp3" % filename)



def play(voice):

    for i in player:

        cmd = "%s %s" % (i, getFilePath(voice))

        a = subprocess.Popen(

            cmd,

            shell=True,

            stdout=subprocess.PIPE,

            stderr=subprocess.PIPE)

        a.wait()

        if a.returncode == 0:

            break



def speak(ip):

    for i in ip:

        if i == ".":

            play("点")

        else:

            play(i)

    play("完")


if __name__ == '__main__':

    count = 0

    while True:

        ip = getLocalIP()

        print ip

        if ip == False:

            play("正在获取网络地址")

        else:

            count += 1

            speak(ip)

        if count == 10:

            break

        time.sleep(1)


« 上一篇下一篇 »

相关文章: