./play_tts.sh "안녕하세요? 쿨엔!"만약 영어로 하려면,
TTSLANG=en ./play_tts.sh "How are you? Coolen?"이런식으로 사용하면 되지요.
이 기능은 소스 커밋하면 목소리로 알려주기 기능의 연장선상에서 진행되었습니다.
./play_tts.sh "안녕하세요? 쿨엔!"만약 영어로 하려면,
TTSLANG=en ./play_tts.sh "How are you? Coolen?"이런식으로 사용하면 되지요.
nc -X connect -x proxyhost:3128 coolengineer.com 80
nc -X connect -x proxyhost:3128 coolengineer.com 22
ssh -o "ProxyCommand nc -X connect -x proxyhost:3128 %h %p" coolengineer.com
$ rpmwand init sample* Created skeleton directory: 'sample-skel'* Created file list: sample-files.txtPlease edit sample-files.txt* Created spec input file: sample.spec.inPlease edit sample.spec.inFix TODO values
$ rpmwand build sample* Package name : sample* Version : 1.0.0* Release : 1--------------------------------------------------------------------------* Making tarball(sample-1.0.0.tar.gz) for rpm build...* Tarball(sample-1.0.0.tar.gz) is assumed containing 'sample-1.0.0' directory as the first child item* Cloning 'sample-skel' directory to 'sample-1.0.0'* Check if there is custom packaging script (sample-setup.sh)skip running: bash sample-setup.sh /home/pynoos/rpmwand/sample-1.0.0* Tarring 'sample-1.0.0.tar.gz' from 'sample-1.0.0'--------------------------------------------------------------------------* Now, building rpm....Building target platforms: noarchBuilding for target noarchExecuting(%prep): /bin/sh -e /home/pynoos/rpmwand/faked-root.19231/tmp/rpm-tmp.83533+ umask 022+ cd /home/pynoos/rpmwand/faked-root.19231/+ true ==================================================================================+ true 'BEG Build preprocess'+ true 'END Build preprocess'+ cd /home/pynoos/rpmwand/faked-root.19231+ rm -rf sample-1.0.0+ /bin/gzip -dc /home/pynoos/rpmwand/sample-1.0.0.tar.gz+ tar -xf -+ STATUS=0+ '[' 0 -ne 0 ']'+ cd sample-1.0.0++ /usr/bin/id -u+ '[' 503 = 0 ']'++ /usr/bin/id -u+ '[' 503 = 0 ']'+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .+ true ==================================================================================+ true 'BEG Setup'+ true 'END Setup'+ exit 0Executing(%build): /bin/sh -e /home/pynoos/rpmwand/faked-root.19231/tmp/rpm-tmp.83533+ umask 022+ cd /home/pynoos/rpmwand/faked-root.19231/+ cd sample-1.0.0+ true ==================================================================================+ true 'BEG Build'+ echo 'BUILDROOT: /home/pynoos/rpmwand/faked-root.19231'BUILDROOT: /home/pynoos/rpmwand/faked-root.19231+ echo 'PACKAGE-NAME: sample'PACKAGE-NAME: sample+ echo 'PACKAGE-VERSION: 1.0.0'PACKAGE-VERSION: 1.0.0+ echo 'PACKAGE-RELEASE: 1'PACKAGE-RELEASE: 1+ true 'END Build'+ exit 0Executing(%install): /bin/sh -e /home/pynoos/rpmwand/faked-root.19231/tmp/rpm-tmp.83533+ umask 022+ cd /home/pynoos/rpmwand/faked-root.19231/+ cd sample-1.0.0+ true ==================================================================================+ true 'BEG Installation'+ /bin/cat+ true 'END Installation'+ make prefix=/home/pynoos/rpmwand/faked-root.19231/usr exec_prefix=/home/pynoos/rpmwand/faked-root.19231/usr bindir=/home/pynoos/rpmwand/faked-root.19231/usr/bin sbindir=/home/pynoos/rpmwand/faked-root.19231/usr/sbin sysconfdir=/home/pynoos/rpmwand/faked-root.19231/etc datadir=/home/pynoos/rpmwand/faked-root.19231/usr/share includedir=/home/pynoos/rpmwand/faked-root.19231/usr/include libdir=/home/pynoos/rpmwand/faked-root.19231/usr/lib libexecdir=/home/pynoos/rpmwand/faked-root.19231/usr/libexec localstatedir=/home/pynoos/rpmwand/faked-root.19231/var sharedstatedir=/home/pynoos/rpmwand/faked-root.19231/usr/com mandir=/home/pynoos/rpmwand/faked-root.19231/usr/share/man infodir=/home/pynoos/rpmwand/faked-root.19231/usr/share/info installI am FAKE Makefile install target. Do you see me?+ true ==================================================================================+ true 'BEG make install'+ true BUILDROOT:/home/pynoos/rpmwand/faked-root.19231+ /bin/rm -rf /home/pynoos/rpmwand/faked-root.19231/sample-1.0.0/Makefile+ mv /home/pynoos/rpmwand/faked-root.19231/sample-1.0.0/etc /home/pynoos/rpmwand/faked-root.19231/sample-1.0.0/usr /home/pynoos/rpmwand/faked-root.19231+ true 'END make install'+ /usr/lib/rpm/brp-compress+ /usr/lib/rpm/brp-strip+ /usr/lib/rpm/brp-strip-static-archive+ /usr/lib/rpm/brp-strip-comment-noteProcessing files: sample-1.0.0-1Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/pynoos/rpmwand/faked-root.19231Wrote: /home/pynoos/rpmwand/RPMS/noarch/sample-1.0.0-1.noarch.rpmExecuting(%clean): /bin/sh -e /home/pynoos/rpmwand/faked-root.19231/tmp/rpm-tmp.27064+ umask 022+ cd /home/pynoos/rpmwand/faked-root.19231/+ cd sample-1.0.0+ true ==================================================================================+ exit 0--------------------------------------------------------------------------* RPM build done...* Check../home/pynoos/rpmwand/RPMS/noarch/sample-1.0.0-1.noarch.rpm
12 --This line, and those below, will be ignored--34 M src/cmdcenter.py
1 [Hojin Choi][BT:n/a][RV:n/a][2010-04-11]23 M src/cmdcenter.py45 --This line, and those below, will be ignored--6 * Log template from /home/pynoos/.subversion/commit-template.txt
$ more ~/.subversion/commit-template.txt@DATE:%Y-%m-%d[Hojin Choi][BT:n/a][RV:n/a][{DATE}]
#!/bin/shTMPFILE=/tmp/svnlog-$$.txtTMPFILE2=/tmp/svnlog-$$.orig.txtsvn pg --revprop -r$1 svn:log > $TMPFILE || exit 1ex $TMPFILE <<'EOT':$d:wq!EOTcp -p $TMPFILE $TMPFILE2vi $TMPFILE || exit 1if cmp $TMPFILE $TMPFILE2 2>/dev/null; thenecho "Skip editting..."elsesvn ps --revprop -r$1 svn:log -F $TMPFILEfirm -f $TMPFILE $TMPFILE2
VBoxManage discardstate {Virtual Machine Name}그리고, 다시 부팅 시도 해봅니다. -- 미투데이 수준의 블로깅.
ftp> open 200.200.200.200debug 라는 명령으로 프로토콜을 중간에 보이도록 하면, 'ls' 명령을 내렸을 때, PORT, LIST 두 개의 조합으로 이루어지는 것을 볼 수 있습니다. (passive 도 한번 해보세요.) 이 때, PORT 명령을 잘 살펴보면, 앞의 네 개의 숫자는 IP고 뒤의 두 개의 숫자는 port를 256으로 나눈 값과 그 나머지 입니다. 53279번 포트(208*256+31=53279)를 열어 두고 PORT 명령을 전송하면, 서버에서 그 포트에 접속하여 LIST를 쏘아주는 것입니다.
Connected to200.200.200.200.
220 FTP Server Ready ..
Name (200.200.200.200:pynoos):
Password:
230 User pynoos logged in
ftp> debug
Debugging on (debug=1).
ftp> ls
---> PORT 172,20,114,164,208,31
200 PORT command successful
---> LIST
150 Opening ASCII mode data connection for file list
-rw-rw-r-- 1 pynoos pynoos 1202 Jul 2 16:43 a
-rwxr-xr-x 1 pynoos pynoos 62 Dec 16 2008 ac.sh
-rw-rw-r-- 1 pynoos pynoos 69386 Dec 16 2008 a.tar.gz
-rwxr-xr-x 1 pynoos pynoos 589463 Aug 10 19:31 s
-rw-r--r-- 1 pynoos pynoos 1630 Aug 10 19:30 s.c
-rw-r--r-- 1 pynoos pynoos 2672 Dec 17 2008 sendmail.c
226 Transfer complete
$ more /etc/ssh/sshd_config이런식으로 SSHD의 서비스를 2560번에 하나 더 띄우고 재시작을 시킵니다. 이렇게 하는 이유는 FTP의 데이터 채널은 1024번 이상의 포트에서 접속이 일어나기 때문에 그렇습니다. 자, 2560번 포트에는 SSH 서비스가 대기하고 있는데, FTP 클라이언트로 PORT, LIST 조합에서 PORT만 전송하고 LIST 명령을 내리지 않으면, 누군가 해당 포트로 접속할 수 있는 것 아니겠습니까?
# Package generated configuration file
# What ports, IPs and protocols we listen for
Port 2560
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
...
$ w자신의 FTP Client가 돌고 있는 외부 IP를 얻습니다. 그리고, 그 서버에서
5:58pm up 187 days, 10:45, 2 users, load average: 0.35, 0.39, 0.44
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
pynoos pts/1 200.111.111.100 5:58pm 0.00s 0.05s 0.00s w
$ ssh 200.111.111.100 -p 2560으로 접속해 들어오면, 프롬프트가 나오는 것을 보실 수 있을 겁니다. 짜잔! 외부에서 바로 들어 올 수 있다니요...
$ sudo debian/rules binary혹은
$ fakeroot debian/rules binary간단하고나...