예제 #1
0
int exec_shell_script(char* fname, LIBSSH2_SESSION *session, LIBSSH2_CHANNEL **channel, int sock)
{
    int rc;
    if((rc=open_shell(session, channel, sock)) <0) return -1;
    
    FILE* cmdfile = fopen(fname, "r");
    if(cmdfile == NULL)
    {
        printf("open file %s errno: %s\n", fname, strerror(errno));
        exit(errno);
    }
    
    char buf[BUFSIZ];
    int i;
    
    
    do
    {
        fgets(buf, BUFSIZ, cmdfile);
        if(feof(cmdfile) == 1) break;
        write_channel(buf, session, *channel, sock);
    }while(!feof(cmdfile));
    
    strncpy(buf, "\nexit\n", 6);
    write_channel(buf, session, *channel, sock);
    read_channel(session, *channel, sock);
    fclose(cmdfile);
//    while((rc = libssh2_channel_close(*channel)) == LIBSSH2_ERROR_EAGAIN) waitsocket(sock, session);
    rc = libssh2_channel_close(*channel);
    return rc;
}
예제 #2
0
파일: test1.c 프로젝트: gazall/raidManage
char *getmsg(char *shell)
{
    char *ret = NULL;
    FILE *fp = NULL;
    char buf[80] = "";

    ret = (char *)malloc(1);              //分配时至少分配一个字节大小的空间
    if (NULL == ret)
    {
 //     printf("%s,%d,shl_name:%s,error:%s\n",__FILE__,__LINE__,shell,strerror(errno));
        return NULL;
    }

    int size = 0,i = 0;
    fp = open_shell(shell);
    while (1)
    {
        if ((i = fread(buf,1,80,fp)) == 0)
            break;
        size += i;
        ret = (char *)realloc(ret, size);

        strncat(ret,buf,i);
    }
    pclose(fp);
    return ret;
}
예제 #3
0
파일: test.c 프로젝트: gazall/raidManage
//获取返回数据所占内存大小
int getsize(char *cmd)
{
	int i = 0;
	int size = 0;
	FILE *fp = NULL;
	char tmp[512] = "";
	fp = open_shell(cmd);
	while (1)
	{
		i = fread(tmp,1,512,fp);
		if (0 == i)
			break;
		size += i;
	}
	pclose(fp);

	return size;
}
예제 #4
0
파일: test.c 프로젝트: gazall/raidManage
//获取信息函数,输入为脚本命令,输出为指向堆空间的指针
char *getmsg(char *shell)
{
	char *ret = NULL;
	FILE *fp = NULL;
	char buf[80] = "";
	
	int size = getsize(shell);
//	printf("%s,%d:size = %d\n",__FILE__,__LINE__,size);
	ret = (char *)malloc(size+1);
	if (NULL == ret)
	{
		printf("%s,%d,shl_name:%s,error:%s\n",__FILE__,__LINE__,shell,strerror(errno));
		return NULL;
	}

	fp = open_shell(shell);	
	while (fgets(buf,80,fp))
	{
		strncat(ret,buf,strlen(buf));
	}
	pclose(fp);

	return ret;
}
예제 #5
0
파일: QBtWorkspace.cpp 프로젝트: sclown/bsc
//*******************************************************************
// customEvent                                     PRIVATE inherited
//*******************************************************************
void QBtWorkspace::customEvent( QEvent* const in_event )
{
    const QBtEvent* const event = dynamic_cast< QBtEvent* >( in_event );
    const int type = static_cast<int>( event->type() );

    switch( type ) {
    case QBtEvent::SWITCH_TAB_REQUEST:
        switch_panels();
        break;
    case QBtEvent::F5_KEY:
        copy();
        break;
    case QBtEvent::F9_KEY:
        pack();
        break;
    case QBtEvent::COMPARE_FILES:
        compare_files();
        break;
    case QBtEvent::COMPARE_DIRS:
        compare_dirs();
        break;
    case QBtEvent::SYNC_DIRS:
        sync_dirs();
        break;
    case QBtEvent::JOIN_FILES:
        join_files();
        break;
    case QBtEvent::DIR_TREE:
        dir_tree();
        break;
    case QBtEvent::MD5_CREATE:
        md5_create();
        break;
    case QBtEvent::MD5_CHECK:
        md5_check();
        break;
    case QBtEvent::DATE_TIME:
        date_time();
        break;
    case QBtEvent::DROP_FILES:
        drop_files( event->data(0).toMap() );
        break;
    case QBtEvent::OPEN_OPOSITE:
        open_oposite();
        break;
    case QBtEvent::OPEN_DIR:
        open_dir( event->data(0).toString() );
        break;
    case QBtEvent::OPEN_SHELL:
        open_shell();
        break;
    case QBtEvent::OPEN_TERMINAL:
        open_terminal();
        break;
    case QBtEvent::OPEN_EDITOR:
        open_editor();
        break;
    case QBtEvent::EXECUTE:
        open( event->data(0).toString(), QStringList(), QString() );
        break;
    }
}