3 * Copyright 1987, 1988 by the Massachusetts Institute of Technology.
4 * For copying and distribution information, please see the file
15 #include "mit-copyright.h"
21 static char buf[BUFSIZ];
22 char *unparse_interval(), *canonicalize_hostname();
25 #define DCM_ENABLE_FLAG 0
27 genable(argc, argv, info)
32 info[1] = strsave(argv[0]);
43 info[0] = "dcm_enable";
44 if (status = do_sms_query("get_value", 1, info, genable, info))
45 com_err(whoami, status, " while getting value of dcm_enable");
46 GetValueFromUser("Enable value", &info[1]);
47 if (status = do_sms_query("update_value", 2, info, Scream, NULL))
48 com_err(whoami, status, " while updating value of dcm_enable");
49 FreeAndClear(&info[0], FALSE);
50 FreeAndClear(&info[1], TRUE);
55 int shserv(argc, argv)
61 Put_message("Name Type Owner Modified");
62 sprintf(tmp, "%s:%s", argv[SVC_ACE_TYPE], argv[SVC_ACE_NAME]);
63 sprintf(buf, "%-10s %-8s %-11s by %s on %s with %s", argv[SVC_SERVICE],
64 argv[SVC_TYPE], tmp, argv[SVC_MODBY], argv[SVC_MODTIME],
67 sprintf(buf, " Interval %s, Target:%s, Script:%s",
68 unparse_interval(atoi(argv[SVC_INTERVAL])), argv[SVC_TARGET],
71 if (atoi(argv[SVC_HARDERROR]))
72 sprintf(tmp, "Error %d: %s", atoi(argv[SVC_HARDERROR]), argv[SVC_ERRMSG]);
74 strcpy(tmp, "No error");
75 dfgen = strsave(atot(argv[SVC_DFGEN]));
76 sprintf(buf, " Generated %s; Last Checked %s", dfgen,
77 atot(argv[SVC_DFCHECK]));
80 sprintf(buf, " %s/%s/%s", atoi(argv[SVC_ENABLE]) ? "Enabled" : "Disabled",
81 atoi(argv[SVC_INPROGRESS]) ? "InProgress" : "Idle", tmp);
96 if (status = do_sms_query("get_server_info", 1, qargv, shserv, NULL))
97 com_err(whoami, status, " while getting server info");
102 char *unparse_interval(i)
105 static char uibuf[10];
107 sprintf(uibuf, "%02d:%02d:00", i / 60, i % 60);
118 initserv(argv[1], info);
120 if (status = do_sms_query("add_server_info", 8, info, Scream, NULL))
121 com_err(whoami, status, " while updating server info");
129 GetValueFromUser("Interval", &info[SC_INTERVAL]);
130 GetValueFromUser("Target", &info[SC_TARGET]);
131 GetValueFromUser("Script", &info[SC_SCRIPT]);
132 GetTypeFromUser("Service type", "service", &info[SC_TYPE]);
133 GetValueFromUser("Enable", &info[SC_ENABLE]);
134 GetTypeFromUser("ACE type", "ace_type", &info[SC_ACE_TYPE]);
135 if (strcasecmp("none", info[SC_ACE_TYPE]))
136 GetValueFromUser("Ace name", &info[SC_ACE_NAME]);
140 gserv(argc, argv, cargv)
145 cargv[SC_SERVICE] = strsave(argv[SVC_SERVICE]);
146 cargv[SC_INTERVAL] = strsave(argv[SVC_INTERVAL]);
147 cargv[SC_TARGET] = strsave(argv[SVC_TARGET]);
148 cargv[SC_SCRIPT] = strsave(argv[SVC_SCRIPT]);
149 cargv[SC_TYPE] = strsave(argv[SVC_TYPE]);
150 cargv[SC_ENABLE] = strsave(argv[SVC_ENABLE]);
151 cargv[SC_ACE_TYPE] = strsave(argv[SVC_ACE_TYPE]);
152 cargv[SC_ACE_NAME] = strsave(argv[SVC_ACE_NAME]);
153 cargv[SC_END] = NULL;
163 argv[SC_SERVICE] = strsave(name);
164 argv[SC_INTERVAL] = strsave("1440");
165 sprintf(tmp, "/tmp/%s.out", name);
166 argv[SC_TARGET] = strsave(tmp);
167 sprintf(tmp, "/u1/sms/bin/%s.sh", name);
168 argv[SC_SCRIPT] = strsave(tmp);
169 argv[SC_TYPE] = strsave("UNIQUE");
170 argv[SC_ENABLE] = strsave("1");
171 argv[SC_ACE_TYPE] = strsave("LIST");
172 argv[SC_ACE_NAME] = strsave("dbadmin");
177 updateserv(argc, argv)
184 qargv[0] = (char *)argv[1];
185 if (status = do_sms_query("get_server_info", 1,
186 qargv, gserv, (char *)qargv)) {
187 com_err(whoami, status, " while getting server info");
191 if (status = do_sms_query("update_server_info", 8, qargv, Scream, NULL))
192 com_err(whoami, status, " while updating server info");
197 int shhost(argc, argv)
203 sprintf(buf, "%s:%s mod by %s on %s with %s", argv[SH_MACHINE],
204 argv[SH_SERVICE], argv[SH_MODBY], argv[SH_MODTIME],
207 if (atoi(argv[SH_HOSTERROR]))
208 sprintf(tmp, "Error %d: %s", atoi(argv[SH_HOSTERROR]), argv[SH_ERRMSG]);
210 strcpy(tmp, "No error");
211 sprintf(buf, " %s/%s/%s/%s/%s",
212 atoi(argv[SH_ENABLE]) ? "Enabled" : "Disabled",
213 atoi(argv[SH_SUCCESS]) ? "Success" : "Failure",
214 atoi(argv[SH_INPROGRESS]) ? "InProgress" : "Idle",
215 atoi(argv[SH_OVERRIDE]) ? "Override" : "Normal", tmp);
217 Put_message(" Last Try Last Success Value1 Value2 Value3");
218 ltt = strsave(atot(argv[SH_LASTTRY]));
219 sprintf(buf, " %-20s %-20s %-9d %-9d %s", ltt, atot(argv[SH_LASTSUCCESS]),
220 atoi(argv[SH_VALUE1]), atoi(argv[SH_VALUE2]), argv[SH_VALUE3]);
235 qargv[SHI_SERVICE] = argv[1];
236 qargv[SHI_MACHINE] = canonicalize_hostname(argv[2]);
237 if (status = do_sms_query("get_server_host_info", 2, qargv, shhost, NULL))
238 com_err(whoami, status, " getting server/host info");
243 resetsrverr(argc, argv)
248 if (status = do_sms_query("reset_server_error", 1, &argv[1], Scream, NULL))
249 com_err(whoami, status, " while resetting server error");
254 resetsrvc(argc, argv)
267 if (status = do_sms_query("set_server_internal_flags", 6, qargv,
269 com_err(whoami, status, " while resetting server error");
274 resethosterr(argc, argv)
280 argv[2] = canonicalize_hostname(argv[2]);
281 if (status = do_sms_query("reset_server_host_error", 2, &argv[1],
283 com_err(whoami, status, " while resetting server/host error");
288 resethost(argc, argv)
296 qargv[1] = canonicalize_hostname(argv[2]);
304 if (status = do_sms_query("set_server_host_internal", 9, qargv,
306 com_err(whoami, status, " while resetting server/host error");
311 sethostor(argc, argv)
317 argv[2] = canonicalize_hostname(argv[2]);
318 if (status = do_sms_query("set_server_host_override", 2, &argv[1],
320 com_err(whoami, status, " while setting server/host override");
325 ghost(argc, argv, cargv)
330 cargv[SHI_SERVICE] = strsave(argv[SH_SERVICE]);
331 cargv[SHI_MACHINE] = strsave(argv[SH_MACHINE]);
332 cargv[SHI_ENABLE] = strsave(argv[SH_ENABLE]);
333 cargv[SHI_VALUE1] = strsave(argv[SH_VALUE1]);
334 cargv[SHI_VALUE2] = strsave(argv[SH_VALUE2]);
335 cargv[SHI_VALUE3] = strsave(argv[SH_VALUE3]);
336 cargv[SHI_END] = NULL;
344 info[SHI_MACHINE] = strsave(canonicalize_hostname(info[SH_MACHINE]));
345 info[SHI_ENABLE] = strsave("1");
346 info[SHI_VALUE1] = strsave("0");
347 info[SHI_VALUE2] = strsave("0");
348 info[SHI_VALUE3] = strsave("");
349 info[SHI_END] = NULL;
356 GetValueFromUser("Enable", &info[SHI_ENABLE]);
357 GetValueFromUser("Value 1", &info[SHI_VALUE1]);
358 GetValueFromUser("Value 2", &info[SHI_VALUE2]);
359 GetValueFromUser("Value 3", &info[SHI_VALUE3]);
363 updatehost(argc, argv)
367 char *info[SHI_END+1];
370 info[SHI_SERVICE] = strsave(argv[1]);
371 info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
372 if (status = do_sms_query("get_server_host_info", 2, info, ghost,
374 com_err(whoami, status, " while getting server/host info");
378 if (status = do_sms_query("update_server_host_info", SHI_END, info,
380 com_err(whoami, status, " while updating server/host info");
390 char *info[SHI_END+1];
393 info[SHI_SERVICE] = strsave(argv[1]);
394 info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
397 if (status = do_sms_query("add_server_host_info", 6, info, Scream, NULL))
398 com_err(whoami, status, " while adding server/host info");
410 if (status = do_sms_query("delete_server_info", 1, &argv[1], Scream, NULL))
411 com_err(whoami, status, " while deleting server info");
422 argv[2] = canonicalize_hostname(argv[2]);
423 if (status = do_sms_query("delete_server_host_info", 2, &argv[1],
425 com_err(whoami, status, " while deleting server/host info");
430 pserv(argc, argv, count)
435 sprintf(buf, "Service %s", argv[0]);
441 phost(argc, argv, count)
446 sprintf(buf, "Host %s:%s", argv[0], argv[1]);
456 int status, count = 0;
458 argv[0] = argv[2] = "DONTCARE";
460 if ((status = do_sms_query("qualified_get_server", 3, argv, pserv,
462 status != SMS_NO_MATCH)
463 com_err(whoami, status, " while getting servers");
465 argv[1] = argv[2] = argv[3] = argv[5] = "DONTCARE";
467 if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
469 status != SMS_NO_MATCH)
470 com_err(whoami, status, " while getting server/hosts");
472 strcpy(buf, "Nothing is in progress at this time");
474 sprintf(buf, "%d update%s in progress at this time", count,
475 count == 1 ? "" : "s");
483 int status, count = 0;
485 argv[0] = argv[1] = "DONTCARE";
487 if ((status = do_sms_query("qualified_get_server", 3, argv, pserv,
489 status != SMS_NO_MATCH)
490 com_err(whoami, status, " while getting servers");
492 argv[1] = argv[2] = argv[3] = argv[4] = "DONTCARE";
494 if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
496 status != SMS_NO_MATCH)
497 com_err(whoami, status, " while getting server/hosts");
499 strcpy(buf, "Nothing has failed at this time");
501 sprintf(buf, "%d thing%s ha%s failed at this time", count,
502 count == 1 ? "" : "s", count == 1 ? "s" : "ve");
511 if (status = sms_do_update())
512 com_err(whoami, status, " while triggering update");