- printf("\nEstablishing an SSH connection to the source system...\n\n");
- unlink(socket_path);
- snprintf(cmd, sizeof cmd, "ssh -MNf -S %s %s@%s", socket_path, remote_user, remote_host);
- exitcode = system(cmd);
- if (exitcode != 0) {
- printf("\nctdlmigrate was unable to establish an SSH connection to the\n"
- "source system, and cannot continue.\n\n");
- exit(exitcode);
- }
-
- printf("\nTesting a command over the connection...\n\n");
- snprintf(cmd, sizeof cmd, "ssh -S %s %s@%s 'echo Remote commands are executing successfully.'",
- socket_path, remote_user, remote_host);
- exitcode = system(cmd);
- printf("\n");
- if (exitcode != 0) {
- printf("Remote commands are not succeeding.\n\n");
- exit(exitcode);
- }
-
- printf("\nLocating the remote 'sendcommand' and Citadel installation...\n");
- snprintf(remote_sendcommand, sizeof remote_sendcommand, "/usr/local/citadel/sendcommand");
- snprintf(cmd, sizeof cmd, "ssh -S %s %s@%s %s NOOP",
- socket_path, remote_user, remote_host, remote_sendcommand);
- exitcode = system(cmd);
- if (exitcode != 0) {
- snprintf(remote_sendcommand, sizeof remote_sendcommand, "/usr/sbin/sendcommand");
- snprintf(cmd, sizeof cmd, "ssh -S %s %s@%s %s NOOP",
- socket_path, remote_user, remote_host, remote_sendcommand);
- exitcode = system(cmd);
- }
- if (exitcode != 0) {
- printf("\nUnable to locate Citadel programs on the remote system. Please enter\n"
- "the name of the directory on %s which contains the 'sendcommand' program.\n"
- "(example: /opt/foo/citadel)\n"
- "--> ", remote_host);
- getz(buf);
- snprintf(remote_sendcommand, sizeof remote_sendcommand, "%s/sendcommand", buf);
- snprintf(cmd, sizeof cmd, "ssh -S %s %s@%s %s NOOP",
- socket_path, remote_user, remote_host, remote_sendcommand);
- exitcode = system(cmd);
- }
- printf("\n");
- if (exitcode != 0) {
- printf("ctdlmigrate was unable to attach to the remote Citadel system.\n\n");
- exit(exitcode);
- }
-
- printf("ctdlmigrate will now begin a database migration...\n");
-
- snprintf(cmd, sizeof cmd, "ssh -S %s %s@%s %s -w3600 MIGR export",
- socket_path, remote_user, remote_host, remote_sendcommand);
- source_artv = popen(cmd, "r");
- if (!source_artv) {
- printf("\n%s\n\n", strerror(errno));
- exit(2);
- }
-
- snprintf(cmd, sizeof cmd, "%s -w3600 MIGR import", sendcommand);
- target_artv = popen(cmd, "w");
- if (!target_artv) {
- printf("\n%s\n\n", strerror(errno));
- exit(3);