int
main(int argc, char **argv)
{
   int ch;
   char *ifname = "eth1";

   while((ch = getopt(argc, argv, "di:l")) != -1) {
      switch(ch) {
         case 'i':
            ifname = optarg;
            break;
         case 'd':
            debuglevel++;
            break;
         case 'l':
            loop_mode++;
            break;
         case '?':
         default:
            usage();
      }
   }

   if(loop_mode) {
      print_reply(ifname, 5);
      while(1) {
         char buf[256];
         if(fgets(buf, sizeof(buf), stdin) == NULL)
            break;
         send_command(ifname, buf);
         print_reply(ifname, 10);
      }
   } else {
      print_reply(ifname, 5);
      send_command(ifname, argv[optind]);
      print_reply(ifname, 10);
      printf("\n");
   }

   return 0;
}
示例#2
0
文件: ftclient.c 项目: DJBrazzy/ftp
int main(int argc, char* argv[]) 
{		
	int data_sock, retcode, s;
	char buffer[MAXSIZE];
	struct command cmd;	
	struct addrinfo hints, *res, *rp;

	if (argc != 3) {
		printf("usage: ./ftclient hostname port\n");
		exit(0);
	}

	char *host = argv[1];
	char *port = argv[2];


	/* Get matching addresses */
	memset(&hints, 0, sizeof(struct addrinfo));
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_STREAM;
	
	s = getaddrinfo(host, port, &hints, &res);
	if (s != 0) {
		printf("getaddrinfo() error %s", gai_strerror(s));
		exit(1);
	}
	
	/* Find an address to connect to & connect */
	for (rp = res; rp != NULL; rp = rp->ai_next) {
		sock_control = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);

		if (sock_control < 0)
			continue;

		if(connect(sock_control, res->ai_addr, res->ai_addrlen)==0) {
			break;
		} else {
			perror("connecting stream socket");
			exit(1);
		}
		close(sock_control);
    }    
	freeaddrinfo(rp);


	/* Get connection, welcome messages */
	printf("Connected to %s.\n", host);
	print_reply(read_reply()); 
	

	/* Get name and password and send to server */
	ftclient_login();

	while (1) { /* loop until user types quit */

		// Get a command from user
		if ( ftclient_read_command(buffer, sizeof buffer, &cmd) < 0) {
			printf("Invalid command\n");
			continue;	// loop back for another command
		}

		// Send command to server
		if (send(sock_control, buffer, (int)strlen(buffer), 0) < 0 ) {
			close(sock_control);
			exit(1);
		}

		retcode = read_reply();		
		if (retcode == 221) {
			/* If command was quit, just exit */
			print_reply(221);		
			break;
		}
		
		if (retcode == 502) {
			/* If invalid command, show error message */
			printf("%d Invalid command.\n", retcode);
		} else {			
			/* Command is valid (RC = 200), process command */
		
			/* open data connection */
			if ((data_sock = ftclient_open_conn(sock_control)) < 0){
				perror("Error opening socket for data connection");
				exit(1);
			}			
			
			// execute command
			if (strcmp(cmd.code, "LIST") == 0) {
				ftclient_list(data_sock, sock_control);
			} 
			else if (strcmp(cmd.code, "RETR") == 0) {
				// wait for reply (is file valid)
				if (read_reply() == 550) {
					print_reply(550);		
					close(data_sock);
					continue; 
				}
				ftclient_get(data_sock, sock_control, cmd.arg);
				print_reply(read_reply()); 
			}
			close(data_sock);
		}

	} // loop back to get more user input

	/* Close the socket (control connection) */
	close(sock_control);
    return 0;  
}
示例#3
0
文件: lvmetactl.c 项目: shehbazj/DyRe
int main(int argc, char **argv)
{
	daemon_reply reply;
	char *cmd;
	char *uuid;
	char *name;
	int val;
	int ver;

	if (argc < 2) {
		printf("lvmetactl dump\n");
		printf("lvmetactl pv_list\n");
		printf("lvmetactl vg_list\n");
		printf("lvmetactl vg_lookup_name <name>\n");
		printf("lvmetactl vg_lookup_uuid <uuid>\n");
		printf("lvmetactl pv_lookup_uuid <uuid>\n");
		printf("lvmetactl set_global_invalid 0|1\n");
		printf("lvmetactl get_global_invalid\n");
		printf("lvmetactl set_vg_version <uuid> <name> <version>\n");
		printf("lvmetactl vg_lock_type <uuid>\n");
		return -1;
	}

	cmd = argv[1];

	h = lvmetad_open(NULL);

	if (!strcmp(cmd, "dump")) {
		reply = daemon_send_simple(h, "dump",
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else if (!strcmp(cmd, "pv_list")) {
		reply = daemon_send_simple(h, "pv_list",
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else if (!strcmp(cmd, "vg_list")) {
		reply = daemon_send_simple(h, "vg_list",
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else if (!strcmp(cmd, "set_global_invalid")) {
		if (argc < 3) {
			printf("set_global_invalid 0|1\n");
			return -1;
		}
		val = atoi(argv[2]);

		reply = daemon_send_simple(h, "set_global_info",
					   "global_invalid = %d", val,
					   "token = %s", "skip",
					   NULL);
		print_reply(reply);

	} else if (!strcmp(cmd, "get_global_invalid")) {
		reply = daemon_send_simple(h, "get_global_info",
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else if (!strcmp(cmd, "set_vg_version")) {
		if (argc < 5) {
			printf("set_vg_version <uuid> <name> <ver>\n");
			return -1;
		}
		uuid = argv[2];
		name = argv[3];
		ver = atoi(argv[4]);

		if ((strlen(uuid) == 1) && (uuid[0] == '-'))
			uuid = NULL;
		if ((strlen(name) == 1) && (name[0] == '-'))
			name = NULL;

		if (uuid && name) {
			reply = daemon_send_simple(h, "set_vg_info",
						   "uuid = %s", uuid,
						   "name = %s", name,
						   "version = %d", ver,
						    "token = %s", "skip",
						    NULL);
		} else if (uuid) {
			reply = daemon_send_simple(h, "set_vg_info",
						   "uuid = %s", uuid,
						   "version = %d", ver,
						    "token = %s", "skip",
						    NULL);
		} else if (name) {
			reply = daemon_send_simple(h, "set_vg_info",
						   "name = %s", name,
						   "version = %d", ver,
						    "token = %s", "skip",
						    NULL);
		} else {
			printf("name or uuid required\n");
			return -1;
		}

		print_reply(reply);

	} else if (!strcmp(cmd, "vg_lookup_name")) {
		if (argc < 3) {
			printf("vg_lookup_name <name>\n");
			return -1;
		}
		name = argv[2];

		reply = daemon_send_simple(h, "vg_lookup",
					   "name = %s", name,
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else if (!strcmp(cmd, "vg_lookup_uuid")) {
		if (argc < 3) {
			printf("vg_lookup_uuid <uuid>\n");
			return -1;
		}
		uuid = argv[2];

		reply = daemon_send_simple(h, "vg_lookup",
					   "uuid = %s", uuid,
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else if (!strcmp(cmd, "vg_lock_type")) {
		struct dm_config_node *metadata;
		const char *lock_type;

		if (argc < 3) {
			printf("vg_lock_type <uuid>\n");
			return -1;
		}
		uuid = argv[2];

		reply = daemon_send_simple(h, "vg_lookup",
					   "uuid = %s", uuid,
					   "token = %s", "skip",
					   NULL);
		/* printf("%s\n", reply.buffer.mem); */

		metadata = dm_config_find_node(reply.cft->root, "metadata");
		if (!metadata) {
			printf("no metadata\n");
			goto out;
		}

		lock_type = dm_config_find_str(metadata, "metadata/lock_type", NULL);
		if (!lock_type) {
			printf("no lock_type\n");
			goto out;
		}
		printf("lock_type %s\n", lock_type);

	} else if (!strcmp(cmd, "pv_lookup_uuid")) {
		if (argc < 3) {
			printf("pv_lookup_uuid <uuid>\n");
			return -1;
		}
		uuid = argv[2];

		reply = daemon_send_simple(h, "pv_lookup",
					   "uuid = %s", uuid,
					   "token = %s", "skip",
					   NULL);
		printf("%s\n", reply.buffer.mem);

	} else {
		printf("unknown command\n");
		goto out_close;
	}
out:
	daemon_reply_destroy(reply);
out_close:
	daemon_close(h);
	return 0;
}
示例#4
0
int main(int argc, char **argv) {
	
	char *device_name = NULL;
	int c, ret;
	unsigned char reply[sizeof(struct sg_header) + MAX_REPLY_LEN];
	int cmd = kDeviceCmdInquiry, val = -1;

	while ((c = getopt (argc, argv, "hc:v:")) != -1)
		switch (c)
		{
		case 'h':
			print_help();
			return 0;

		case 'c':
			if(strcmp(optarg, "inquiry") == 0)
				cmd = kDeviceCmdInquiry;

			else if(strcmp(optarg, "lock") == 0)
				cmd = kDeviceCmdLockDevice;

			else if(strcmp(optarg, "unlock") == 0)
				cmd = kDeviceCmdUnlockDevice;

			else if(strcmp(optarg, "disconnect") == 0)
				cmd = kDeviceCmdDisconnectOk;

			else if(strcmp(optarg, "get") == 0)
				cmd = kDeviceCmdGetSetting;

			else if(strcmp(optarg, "undefined") == 0)
				cmd = kDeviceCmdUndefined;

			else {
				printf("Invalid command %s\n", optarg);
				return 1;
			}
			break;

		case 'v':
			if(strcmp(optarg, "battery") == 0)
				val = kSettingBatteryLevel;

			else if(strcmp(optarg, "rtc") == 0)
				val = kSettingRTCCounter;

			else if(strcmp(optarg, "serial") == 0)
				val = kSettingSerialNumber;

			else if(strcmp(optarg, "undefined") == 0)
				val = kSettingUndefined;

			else {
				printf("Invalid value %s\n", optarg);
				return 1;
			}
			break;

		case '?':
		default:
			print_help();
			return 1;
		}
	
	if(optind != argc - 1) {
		printf("No scsi device specified\n");
		return 1;
	}
	device_name = argv[optind];

	if(cmd == kDeviceCmdGetSetting && val == -1) {
		printf("Must get command requires -v option.\n");
		return 1;
	}
	
	fd = open(device_name, O_RDWR);
	if(fd == -1) {
		perror("Failed to open scsi device.");
		return 1;
	}
	
	/* print some fields of the inquiry result */
	ret = send_cmd(cmd, val, reply);
	if(ret) {
		printf("Failed to send cmd 0x%x\n", cmd);
		return 1;
	}
	print_reply(cmd, val, reply);
	
	close(fd);
	return 0;
}
示例#5
0
static gboolean
validate_stuff (const gchar *path)
{
    GDBusProxy *session;
    GError     *error = NULL;

    g_print ("entering validate_stuff for %s\n", path);

    session = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
                                             G_DBUS_PROXY_FLAGS_NONE,
                                             NULL,
                                             DBUS_NAME,
                                             path,
                                             DBUS_SESSION_INTERFACE,
                                             NULL,
                                             &error);

    if (session == NULL || error != NULL)
    {
        if (error != NULL) {
            g_printerr ("Error creating session proxy: %s\n", error->message);
            g_clear_error (&error);
        }
        return FALSE;
    }

    print_proxy_info (session);

    print_reply (session, "GetId");

    print_reply (session, "GetSeatId");

    print_reply (session, "GetSessionType");

    print_reply (session, "GetUser");

    print_reply (session, "GetUnixUser");

    print_reply (session, "GetX11Display");

    print_reply (session, "GetX11DisplayDevice");

    print_reply (session, "GetDisplayDevice");

    print_reply (session, "GetRemoteHostName");

    print_reply (session, "GetLoginSessionId");

    print_reply (session, "IsActive");

    print_reply (session, "IsLocal");

    print_reply (session, "GetCreationTime");

    print_reply (session, "GetIdleHint");

    print_reply (session, "GetIdleSinceHint");

    g_print ("done printing stuff for %s\n\n", path);

    g_object_unref (session);

    return TRUE;
}