오늘 일하면서 입력한 명령어…

pchero@MyDebian:~$ 허미…
-bash: $’355227210353257270…’: command not found
pchero@MyDebian:~$ 무지하게 졸립구만.
-bash: $’353254264354247200355225230352262214′: command not found
pchero@MyDebian:~$ 우짜면 좋을까남..
-bash: $’354232260354247234353251264′: command not found
pchero@MyDebian:~$ …..
-bash: …..: command not found

아 졸려… -_-;;;

 

Could not get python modules list…

사용가능한 Python 모듈들을 알아보기 위해 python 인터프리터에서 전체 모듈보기 명령어를 입력했는데, 다음과 같은 오류 메시지를 확인했다.

pchero@MyDebian:/usr/lib/pymodules/python2.7$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help('modules')

Please wait a moment while I gather a list of all available modules...

/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
  import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
  warnings.warn(str(e), _gtk.Warning)
/usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: cannot register existing type `GtkWidget'
  g_type = info.get_g_type()
/usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: cannot add class private field to invalid type '<invalid>'
  g_type = info.get_g_type()
/usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed
  g_type = info.get_g_type()
/usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: cannot register existing type `GtkBuildable'
  g_type = info.get_g_type()
/usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: g_type_interface_add_prerequisite: assertion `G_TYPE_IS_INTERFACE (interface_type)' failed
  g_type = info.get_g_type()
/usr/lib/python2.7/dist-packages/gi/module.py:142: Warning: g_once_init_leave: assertion `result != 0' failed
  g_type = info.get_g_type()
/usr/lib/python2.7/dist-packages/gi/module.py:146: Warning: g_type_get_qdata: assertion `node != NULL' failed
  type_ = g_type.pytype

그리고 Hang 이 걸린듯 더이상 진행되지 않았다.

해결법을 찾던 도중, http://blog.rabbitvcs.org/archives/312 에서 비슷한 현상에 대한 해결법을 찾았는데 뭔가 완벽하진 않았다.
http://stackoverflow.com/questions/13301100/python-fail-to-display-list-of-modules 여기도 역시…
내용인 즉, help(‘modules’) 를 입력하기 전에 gtk 모듈을 먼저 load 하라는 것인데.. 깔끔하지 않았다.

pchero@MyDebian:/etc$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
  warnings.warn(str(e), _gtk.Warning)
>>> 
>>> 
>>> help('modules')

Please wait a moment while I gather a list of all available modules...

/usr/lib/python2.7/dist-packages/keybinder/__init__.py:26: GtkWarning: IA__gdk_keymap_get_for_display: assertion `GDK_IS_DISPLAY (display)' failed
  from _keybinder import *
/usr/lib/python2.7/dist-packages/keybinder/__init__.py:26: GtkWarning: IA__gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed
  from _keybinder import *

** (.:7702): WARNING **: keybinder_init: Unable to open display
ANSI                _codecs_iso2022     fdpexpect           pyatspi
ArgImagePlugin      _codecs_jp          feedparser          pyclbr
BaseHTTPServer      _codecs_kr          filecmp             pycurl
Bastion             _codecs_tw          fileinput           pydoc
BdfFontFile         _collections        fnmatch             pydoc_data
BeautifulSoup       _csv                formatter           pyexpat
BeautifulSoupTests  _ctypes             fpconst             pygtk
BmpImagePlugin      _ctypes_test        fpectl              pynotify
BufrStubImagePlugin _curses             fpformat            quopri
CDROM               _curses_panel       fractions           random
CGIHTTPServer       _dbus_bindings      freeswitch          re
Canvas              _dbus_glib_bindings ftplib              readline
ConfigParser        _elementtree        functools           reportbug
ContainerIO         _functools          future_builtins     reportlab
Cookie              _hashlib            gc                  repr
CurImagePlugin      _heapq              gconf               resource
DLFCN               _hotshot            genericpath         rexec
DcxImagePlugin      _imaging            getopt              rfc822
Dialog              _imagingcms         getpass             rlcompleter
DocXMLRPCServer     _imagingft          gettext             robotparser
EpsImagePlugin      _imagingmath        gi                  runpy
ExifTags            _io                 gio                 scanext
FSM                 _json               glib                sched
FileDialog          _locale             glob                screen
FitsStubImagePlugin _lsprof             gnome               select
FixTk               _multibytecodec     gnome_sudoku        serial
FliImagePlugin      _multiprocessing    gnomecanvas         sets
FontFile            _pyio               gnomevfs            setuptools
FpxImagePlugin      _random             gobject             sgmllib
GbrImagePlugin      _renderPM           grp                 sgmlop
GdImageFile         _rl_accel           gtk                 sha
GifImagePlugin      _socket             gtkunixprint        shelve
GimpGradientFile    _sqlite3            gtweak              shlex
GimpPaletteFile     _sre                gzip                shutil
GnuPGInterface      _ssl                hamster             signal
GribStubImagePlugin _strptime           hashlib             site
HTMLParser          _struct             heapq               sitecustomize
Hdf5StubImagePlugin _symtable           hmac                smtpd
HelloModule         _sysconfigdata      hotshot             smtplib
IN                  _sysconfigdata_nd   hpmudext            sndhdr
IcnsImagePlugin     _testcapi           htmlentitydefs      socket
IcoImagePlugin      _threading_local    htmllib             softwareproperties
ImImagePlugin       _warnings           httplib             speechd
Image               _weakref            httplib2            speechd_config
ImageChops          _weakrefset         ihooks              spwd
ImageCms            abc                 imaplib             sqlite3
ImageColor          aifc                imghdr              sre
ImageDraw           antigravity         imp                 sre_compile
ImageDraw2          anydbm              importlib           sre_constants
ImageEnhance        apt                 imputil             sre_parse
ImageFile           apt_inst            inspect             ssl
ImageFileIO         apt_pkg             invest              starpy
ImageFilter         aptdaemon           io                  stat
ImageFont           aptsources          itertools           statvfs
ImageGL             argparse            json                string
ImageGrab           array               keybinder           stringold
ImageMath           ast                 keyword             stringprep
ImageMode           asynchat            lib2to3             strop
ImageOps            asyncore            libxml2             struct
ImagePalette        atexit              libxml2mod          subprocess
ImagePath           atk                 linecache           sunau
ImageQt             audiodev            linuxaudiodev       sunaudio
ImageSequence       audioop             locale              symbol
ImageShow           axi                 logging             symtable
ImageStat           base64              louis               sys
ImageTransform      bdb                 lsb_release         sysconfig
ImageWin            binascii            macpath             syslog
ImtImagePlugin      binhex              macurl2path         tabnanny
IptcImagePlugin     bisect              mailbox             tarfile
JpegImagePlugin     bonobo              mailcap             telnetlib
McIdasImagePlugin   brlapi              mako                tempfile
MicImagePlugin      bsddb               markupbase          termios
MimeWriter          bz2                 markupsafe          test
MpegImagePlugin     cPickle             marshal             test1
MspImagePlugin      cProfile            math                textwrap
ORBit               cStringIO           md5                 this
OleFileIO           cairo               mhlib               thread
OpenSSL             calendar            mimetools           threading
PAM                 caribou             mimetypes           tidy
PIL                 cgi                 mimify              time
PSDraw              cgitb               mmap                timeit
PaletteFile         chardet             mod_fstest          tkColorChooser
PalmImagePlugin     chunk               mod_test            tkCommonDialog
PcdImagePlugin      cmath               modulefinder        tkFileDialog
PcfFontFile         cmd                 multifile           tkFont
PcxImagePlugin      code                multiprocessing     tkMessageBox
PdfImagePlugin      codecs              mutex               tkSimpleDialog
PixarImagePlugin    codeop              netrc               toaiff
PngImagePlugin      collections         new                 token
PpmImagePlugin      colorsys            nis                 tokenize
PsdImagePlugin      commands            nntplib             trace
Queue               compileall          ntpath              traceback
SOAPpy              compiler            nturl2path          ttk
ScrolledText        contextlib          numbers             tty
SgiImagePlugin      cookielib           numpy               turtle
SimpleDialog        copy                opcode              twisted
SimpleHTTPServer    copy_reg            operator            types
SimpleXMLRPCServer  crypt               optparse            unicodedata
SocketServer        csv                 orca                unittest
SpiderImagePlugin   ctypes              os                  uno
StringIO            cupsext             os2emxpath          unohelper
SunImagePlugin      curl                ossaudiodev         urllib
TYPES               curses              packagekit          urllib2
TarIO               datetime            pango               urlparse
TgaImagePlugin      dbhash              pangocairo          user
TiffImagePlugin     dbm                 parser              uu
TiffTags            dbus                pcardext            uuid
Tix                 deb822              pdb                 vte
Tkconstants         debconf             pexpect             warnings
Tkdnd               debian              pickle              wave
Tkinter             debian_bundle       pickletools         weakref
UserDict            debianbts           pip                 webbrowser
UserList            decimal             pipes               whichdb
UserString          defer               pkg_resources       wnck
WalImageFile        difflib             pkgutil             wsgiref
WmfImagePlugin      dircache            platform            xapian
XVThumbImagePlugin  dis                 plistlib            xdg
XbmImagePlugin      distutils           popen2              xdrlib
XpmImagePlugin      doctest             poplib              xml
_LWPCookieJar       drv_libxml2         posix               xmllib
_MozillaCookieJar   dsextras            posixfile           xmlrpclib
__builtin__         dumbdbm             posixpath           xxsubtype
__future__          dummy_thread        pprint              zeitgeist
_abcoll             dummy_threading     profile             zipfile
_ast                easy_install        pstats              zipimport
_bisect             email               pty                 zlib
_bsddb              encodings           pwd                 zope
_codecs             errno               pxssh               
_codecs_cn          exceptions          pyHnj               
_codecs_hk          fcntl               py_compile          

Enter any module name to get more help.  Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".

[Freeswitch] Enable python script.

Freeswitch-python module install & configuration

Debian Linux/Freeswitch source 설치 기준으로 설명한다.

Freeswitch Python 모듈인 mod_pythom 을 설치해야 한다.
Source Directory 로 이동하자.

$ cd /usr/local/src/freeswitch.git

Freeswitch 는 설치시 모든 모듈을 컴파일하지 않는다. 아무런 추가 설정이 없다면 기본 모듈만을 설치한다.
따라서, 다른 추가 모듈들이 필요하다면 별도의 설정 후, 다시 컴파일을 진행해 주어야 한다.
정확히는 컴파일 시, Source 디렉토리 내의 modules.conf 파일을 참조하여 컴파일을 해야하는 모듈들을 확인한 다음에 컴파일을 진행한다.
따라서, modules.conf 파일을 수정하면 추가적인 모듈 설치가 가능하다.
python module compile 을 활성화 시키기 위해서 modules.conf 파일을 수정한다.

$ vi modules.conf

mod_python 부분을 찾아서 주석 해제한다.

#languages/mod_python
languages/mod_python

make & make install.

$ make && make install

python-freeswitch 모듈이 제대로 설치되었는지 확인해야 한다.
아래의 예제처럼 python 시작후, 전체 모듈 검색에서 freeswitch 모듈이 확인되어야 한다.
만약 확인되지 않으면 수동으로 freeswitch 모듈을 옮겨 주어야 한다.

pchero@MyDebian:/etc$ python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> help('modules')

ANSI                _codecs_iso2022     fdpexpect           pyatspi
ArgImagePlugin      _codecs_jp          feedparser          pyclbr
BaseHTTPServer      _codecs_kr          filecmp             pycurl
Bastion             _codecs_tw          fileinput           pydoc
BdfFontFile         _collections        fnmatch             pydoc_data
BeautifulSoup       _csv                formatter           pyexpat
BeautifulSoupTests  _ctypes             fpconst             pygtk
BmpImagePlugin      _ctypes_test        fpectl              pynotify
BufrStubImagePlugin _curses             fpformat            quopri
CDROM               _curses_panel       fractions           random
CGIHTTPServer       _dbus_bindings      freeswitch          re
Canvas              _dbus_glib_bindings ftplib              readline
ConfigParser        _elementtree        functools           reportbug
ContainerIO         _functools          future_builtins     reportlab
...

만약 확인되지 않는다면 수동으로 freeswitch 모듈을 설치해 주어야 한다.
아래의 예제는 Debian Linux/Python2.7 설치 기준이다.
리눅스 배포판/Python 버전에 따라 모듈 설치 디렉토리가 달라지므로 주의하자.

pchero@MyDebian:/usr/local/src/freeswitch.git/src/mod/languages/mod_python$ pwd
/usr/local/src/freeswitch.git/src/mod/languages/mod_python

pchero@MyDebian:/usr/local/src/freeswitch.git/src/mod/languages/mod_python$ sudo cp ./freeswitch.py /usr/lib/python2.7/dist-packages/

 

Python 에서 freeswitch 모듈을 확인했다면, 이제는 Freeswitch 에서 Python 모듈이 사용가능한지 확인해야 한다.

modules.conf.xml 파일에서 매번 자동으로 mod_python module 을 load 하도록 설정해주자.
<load_module=”mod_python”> 부분을 주석 해제하거나 추가해주자.

    <!-- Languages -->
    <!-- <load module="mod_spidermonkey"/> -->
    <load module="mod_v8"/>
    <!-- <load module="mod_perl"/> -->
    <load module="mod_python"/>
    <!-- <load module="mod_java"/> -->
    <load module="mod_lua"/>

freeswitch cli(fs_cli) 에서 mod_python 모듈을 load 하고, 정상적으로 load 되었는지 확인하자.

freeswitch@192.168.200.10@internal> load mod_python
+OK Reloading XML

freeswitch@192.168.200.10@internal> module_exists mod_python
true

Using python script on freeswitch.

이제 실제로 sample python script 를 작성 및 사용해 보자. mod_python 소스 디렉토리에는 훌륭한 예제 스크립트가 있다. 사용하도록 하자.

cp /usr/local/src/freeswitch.git/src/mod/languages/mod_python/python_example.py /usr/lib/pymodules/python2.7

마지막으로 실제 Dialplan 내에서 python 모듈을 호출하도록 설정해야 한다.

<include>
  <extension name="python_test">
    <condition field="destination_number" expression="^(5555555)$">
      <!--
      If you're hosting multiple domains you will want to set the
      target_domain on these calls so they hit the proper domain after you
      transfer the caller into the default context. 
      
      $${domain} is the default domain set from vars.xml but you can set it
      to any domain you have setup in your user directory.

      -->
      <action application="info"/>
      <action application="python" data="python_example"/>
      <!--<action application="set" data="domain_name=$${domain}"/>-->
      <!-- This example maps the DID 5551212 to ring 1000 in the default context -->
      <!--<action application="transfer" data="1000 XML default"/>-->
    </condition>
  </extension>
</include>

 

참조 : https://wiki.freeswitch.org/wiki/Mod_python#Sample_Python_Scripts

[FreeBSD] Network configure

시스템 부팅시 자동으로 NIC 에 IP 를 할당하고 싶다면 /etc/rc.conf 파일을 이용한다.

rc.conf 설정 예제.

root@FBSD10:/etc # vi rc.conf 

hostname="FBSD10"
#ifconfig_em0="DHCP"
ifconfig_em0="10.0.2.16/24"
ifconfig_em0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"
ntpd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"

# Set for em1
ifconfig_em1="192.168.200.12/24"

# Set for em2
ifconfig_em2="192.168.201.12/24"

# Default route gateway
defaultrouter="10.0.2.2"

 

rc.conf 파일은 NIC 설정외에도 다양한 기능들을 지원한다. 리눅스의 /etc/rc.local 파일을 생각하면 되겠다.
이보다 더 자세한 옵션들을 보고 싶다면..

$ man rc.conf

 

/etc/rc.conf 파일 설정 이후, 재부팅없이 네트워크를 Up/Down/Restart 를 해야 한다면 다음을 활용하자.

Netowrk Restart

$ /etc/rc.d/netif restart

Network Down

$ /etc/rc.d/netif stop

Network Up

$ /etc/rc.d/netif start

 

Routing Table 도 마찬가지로 조작이 가능하다.

Network routing table Restart

$ /etc/rc.d/routing restart

 

출처 : http://www.cyberciti.biz/tips/freebsd-how-to-start-restart-stop-network-service.html

Where’s mod_spdiermonkey source in Freeswitch-1.2.7?

Freeswitch Pizza voice 예제를 Test하려고 spidermonkey 모듈을 찾았다.

사용한 Freeswitch 버전은 1.2.7 버전. 이 글을 쓰는 시점에서 git 으로 다운받으로 최신의 버전이다.

 

그런데, 소스를 아무리 뒤져봐도 mod_spidermonkey 컴파일을 할 수가 없었다.(디렉토리/Makefile 분석 등등..)

아예 소스 자체가 없는 것으로 보아 배포판 버전에 빠져있는 듯 하다.

 

Freeswitch IRC 에 문의를 해보니 spidermonkey 배포 누락에 관한 이야기는 듣지 못하고 대안으로 mod_v8 를 사용하라고 한다.

흐음…