<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>浮山狼de博客 &#187; robot</title>
	<atom:link href="https://www.fushanlang.com/tag/robot/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fushanlang.com</link>
	<description>next station - 下一站，活在当下，且行且思</description>
	<lastBuildDate>Sat, 29 Nov 2014 15:14:11 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.5</generator>
	<item>
		<title>Linux Skype Robot</title>
		<link>https://www.fushanlang.com/skype-robot-linux-2361/</link>
		<comments>https://www.fushanlang.com/skype-robot-linux-2361/#comments</comments>
		<pubDate>Tue, 25 Feb 2014 01:50:51 +0000</pubDate>
		<dc:creator><![CDATA[fushanlang]]></dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[skype]]></category>

		<guid isPermaLink="false">http://www.fushanlang.com/blog/?p=2361</guid>
		<description><![CDATA[Skype Robot  in Ubuntu skype linux 机器人 <p>1.安装所需的软件包</p> apt-get install python-software-properties sudo add-apt-repository "deb http://archive.canonical.com/$(lsb_release -sc) partner" sudo apt-get update sudo apt-get install gcc sudo apt-get install skype sudo apt-get install xvfb sudo apt-get install fluxbox x11vnc sudo apt-get install dbus sudo apt-get install vnc4server <p>http://www.qxs.ch/2011/01/07/skype-instant-messages-from-zabbix/</p> wget http://sourceforge.net/projects/skype4py/files/skype4py/1.0.32.0/Skype4Py-1.0.32.0.tar.gz tar -xzf Skype4Py-1.* cd Skype4Py-1.0.32.0/ python setup.py install <span style="color:#777"> . . . &#8594; Read More: <a href="https://www.fushanlang.com/skype-robot-linux-2361/">Linux Skype Robot</a></span>]]></description>
				<content:encoded><![CDATA[<h1>Skype Robot  in Ubuntu</h1>
<h2>skype linux 机器人</h2>
<p><strong>1.安装所需的软件包</strong></p>
<pre class="php" name="code">apt-get install python-software-properties
sudo add-apt-repository "deb http://archive.canonical.com/$(lsb_release -sc) partner"
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install skype
sudo apt-get install xvfb
sudo apt-get install fluxbox x11vnc
sudo apt-get install dbus
sudo apt-get install vnc4server</pre>
<p><a href="http://www.qxs.ch/2011/01/07/skype-instant-messages-from-zabbix/" rel="nofollow">http://www.qxs.ch/2011/01/07/skype-instant-messages-from-zabbix/</a></p>
<pre class="php" name="code">wget http://sourceforge.net/projects/skype4py/files/skype4py/1.0.32.0/Skype4Py-1.0.32.0.tar.gz
tar -xzf Skype4Py-1.*
cd Skype4Py-1.0.32.0/
python setup.py install
vi ./build/lib.linux-i686-2.7/Skype4py/api/posix_dbus.py
(64位： vi ./build/lib.linux-x86_64-2.7/Skype4Py/api/posix_dbus.py)
replace os.execlp('skype') with os.execlp('skype', 'skype')
python setup.py install</pre>
<p><strong>2.create file skype_chat.py</strong></p>
<div>
<pre class="python" name="code">import os
import sys
import optparse
import Skype4Py

parser = optparse.OptionParser(version='%prog 1.0.0');
parser.add_option('--create-channel', help='create a new channel');
parser.add_option('--user', help='skype username');
parser.add_option('--disband-channel', help='disband a channel');
parser.add_option('--sendto-channel', help='select a channel');
parser.add_option('--message', help='send msg to channel');
parser.add_option('--from-channel', help='from channel');
parser.add_option('--kick', help='kicks member(s) from chat');

opts, args = parser.parse_args();
if args:
    parser.error('unexpected argument(s)'); 

skype = Skype4Py.Skype(Transport='x11');
channel_file = 'skype_channel'; 
def SkypeInit():
    if not skype.Client.IsRunning:
        skype.Client.Start();
    skype.Attach(); 
def GetChatName(channel):
    if not os.path.isfile(channel_file):
        print 'can not find channel file skype_channel, please create new channel.';
        exit();
    f = open(channel_file,'r');
    lines = f.readlines();
    chat_name = None;
    for line in lines:
        channel_list = line.split();
        channel_name = channel_list[0];
        if channel_name == channel:
            chat_name = channel_list[1];
            break;
    f.close();
    return chat_name; 
if opts.create_channel != None and opts.user != None:
    channel = opts.create_channel;
    user = opts.user;
    SkypeInit();
    chat = skype.CreateChatWith(user);
    f = open(channel_file,'a+');
    lines = f.readlines();

    for line in lines:
        cname = line.split();
        cname = cname[0];
        if cname == channel:
            f.close();
            print 'channel ', cname , ' has existed!';
            exit();    
    f.write(channel + ' ' + chat.Name + '\n');
    f.close();
    print 'channel ', channel, ' created successfull.';
elif opts.sendto_channel != None and opts.message != None:
    channel = opts.sendto_channel;
    msg = opts.message;
    chat_name = GetChatName(channel);
    if chat_name != None:
        SkypeInit();
        chat = skype.Chat(chat_name);
        chat.SendMessage(msg);
    else:
         print 'channel ', channel_name, ' not find!';
         exit();
elif opts.kick != None and opts.from_channel != None:
    channel = opts.from_channel;
    chat_name = GetChatName(channel);
    if chat_name != None:
        SkypeInit();
        chat = skype.Chat(chat_name);
        chat.Kick(opts.kick);
    else:
        print 'channel ', channel_name, ' not find!';</pre>
</div>
<p><strong>3.server socket:</strong></p>
<p>listen port 47777<br />
vi skype_socket.c</p>
<table class="confluenceTable tablesorter">
<thead>
<tr class="sortableHeader">
<th class="confluenceTh sortableHeader" data-column="0">
<div class="tablesorter-header-inner">skype_socket.c</div>
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="confluenceTd">
<p><span style="color: rgb(0,128,0);">#include &lt;stdio.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;stdlib.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;string.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;signal.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;sys/types.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;sys/wait.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;unistd.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">#include &lt;netinet/in.h&gt;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">#define MAXLINE 1024</span></p>
<p><span style="color: rgb(0,128,0);">#define SERV_PORT 47777</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">int substr(char* dchr,char *schr,int begin,int len){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; int slen=0;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; int rc=0; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; if (begin&lt;=0) begin=1;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; slen=strlen(schr)-begin; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; if (slen&lt;=0||len==0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp; *dchr=NULL;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp; return rc;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; if (len&lt;0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; len=-len;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; if(len&gt;strlen(schr)) begin=1;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; else if((begin-len)&lt;=0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len=begin;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin=1;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; else {</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp; begin-=len;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp; begin++;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; begin&#8211;;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; schr+=begin;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; int i=0;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; for(i=0;i&lt;len&amp;&amp;*schr!=0;i++){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; *dchr++ = *schr++;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; *dchr=0;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; rc=i;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; return rc;</span></p>
<p><span style="color: rgb(0,128,0);">}</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">int main(int argc,char *argv[]){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; pid_t pid;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; struct sockaddr_in servaddr,cliaddr;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; socklen_t cliaddr_len;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; int listenfd,connfd;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; char buf[MAXLINE];</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; char str[INET_ADDRSTRLEN];</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; int i,n,m;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; char delim[10] = &#8220;;;&#8221;; //default delim</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; int max_size = 800;&nbsp;&nbsp; &nbsp; //default max msg size</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; if(argc == 2 ){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; strcpy(delim, argv[1]);&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; if(argc == 3){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; max_size = (int)argv[2];</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; listenfd = socket(AF_INET,SOCK_STREAM,0);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; if( listenfd &lt; 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; printf(&#8220;Create Socket Failed!&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; bzero(&amp;servaddr,sizeof(servaddr));</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; servaddr.sin_family = AF_INET;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; servaddr.sin_addr.s_addr = htonl(INADDR_ANY);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; servaddr.sin_port = htons(SERV_PORT);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; if(bind(listenfd,(struct sockaddr *)(&amp;servaddr),sizeof(servaddr)) == -1){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;&nbsp; perror(&#8220;bind Error&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;}</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; if(listen(listenfd,20) &lt; 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&#8220;listen Error&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;}</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; while(1){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;&nbsp; cliaddr_len = sizeof(struct sockaddr_in); &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connfd = accept(listenfd,(struct sockaddr *)(&amp;cliaddr),&amp;cliaddr_len);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;&nbsp; if(connfd &lt; 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&#8220;accept Error&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;&nbsp; m = fork();</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m == -1){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&#8220;call to fork error&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else if(m == 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//sub process</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(1){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = read(connfd,buf,MAXLINE);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n &lt; 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; perror(&#8220;read Error&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n == 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf(&#8220;the other side has been closed.\n&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *p;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char channel[20], msg[max_size];</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(channel, &#8216;\0&#8242;, sizeof(channel));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = strstr(buf, delim);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; substr(channel, buf, 0, strlen(buf)-strlen(p));</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; substr(msg, p, 3, max_size);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf(&#8220;%s\n&#8221;, msg);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!strcasecmp(channel, &#8220;ls&#8221;)){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;system(&#8220;ls -lh /data/binary/ &#8220;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char cmdfile[10] = &#8220;./&#8221;;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char filename[] = &#8220;send.sh&#8221;;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strcat(cmdfile, filename);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char *arg[]={filename, channel, msg, NULL};</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( access(filename, F_OK) != 0 ) {</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf(&#8220;file %s not find.\n&#8221;, filename);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; //execute shell script</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(execvp(cmdfile, arg) &lt; 0){</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //printf(&#8220;execvp error&#8221;);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(1);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(connfd);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit(0);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; close(connfd);</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="color: rgb(0,128,0);">}</span></p>
</td>
</tr>
</tbody>
</table>
<p><strong> create &#8220;send.sh&#8221; : </strong></p>
<pre class="php">#!/bin/bash
channel=$1
msg=$2
python skype_chat.py --sendto-channel="$channel" --message="(*) $msg"</pre>
<p><strong>4. compile skype_socket.c:</strong></p>
<p>gcc -o skype_socket skype_socket.c</p>
<p>&nbsp;</p>
<p><strong>5.start socket and test send message by VNC:</strong></p>
<p>on server that skype installed run vncserver:</p>
<p>vncserver</p>
<p>enter password: skype</p>
<p>on your client computer run vnc clien and connect to server, you will open a window and a shell window, then run command:</p>
<p>skype &amp;</p>
<p>then login skype with ROBOT account, and then start socket:</p>
<pre class="php" name="code">./skype_socket &gt;/dev/null 2&gt;&amp;1 &amp;</pre>
<p>run &#8220;netstat -tlnp|grep skype&#8221;, you can find listen port 47777</p>
<p>create chat channel:</p>
<pre class="php" name="code">python skype_chat.py --create-channel="AAA" --user="your_skype_account"</pre>
<p><strong>6.on any server ,send message to chat chennel</strong>:</p>
<pre class="php" name="code">echo "AAA;;Hello everyone."|nc Server 47777</pre>
<p>引自：<br />
<a title="binary.chen.skype.robot" href="http://www.76ku.cn/articles/archives/252"><strong>http://www.76ku.cn/articles/archives/252</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.fushanlang.com/skype-robot-linux-2361/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.227 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2025-09-23 15:28:34 -->
