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)
259 char *qargv[5], buf[BUFSIZ];
261 sprintf(buf, "Reset state for service %s (Y/N)", argv[1]);
270 if (status = do_sms_query("set_server_internal_flags", 6, qargv,
272 com_err(whoami, status, " while resetting server error");
277 resethosterr(argc, argv)
283 argv[2] = canonicalize_hostname(argv[2]);
284 if (status = do_sms_query("reset_server_host_error", 2, &argv[1],
286 com_err(whoami, status, " while resetting server/host error");
291 resethost(argc, argv)
296 char *qargv[9], buf[BUFSIZ];
298 sprintf(buf, "Reset state for service %s on host %s (Y/N)", argv[1],
299 canonicalize_hostname(argv[2]));
303 qargv[1] = canonicalize_hostname(argv[2]);
311 if (status = do_sms_query("set_server_host_internal", 9, qargv,
313 com_err(whoami, status, " while resetting server/host error");
318 sethostor(argc, argv)
324 argv[2] = canonicalize_hostname(argv[2]);
325 if (status = do_sms_query("set_server_host_override", 2, &argv[1],
327 com_err(whoami, status, " while setting server/host override");
332 ghost(argc, argv, cargv)
337 cargv[SHI_SERVICE] = strsave(argv[SH_SERVICE]);
338 cargv[SHI_MACHINE] = strsave(argv[SH_MACHINE]);
339 cargv[SHI_ENABLE] = strsave(argv[SH_ENABLE]);
340 cargv[SHI_VALUE1] = strsave(argv[SH_VALUE1]);
341 cargv[SHI_VALUE2] = strsave(argv[SH_VALUE2]);
342 cargv[SHI_VALUE3] = strsave(argv[SH_VALUE3]);
343 cargv[SHI_END] = NULL;
351 info[SHI_MACHINE] = strsave(canonicalize_hostname(info[SH_MACHINE]));
352 info[SHI_ENABLE] = strsave("1");
353 info[SHI_VALUE1] = strsave("0");
354 info[SHI_VALUE2] = strsave("0");
355 info[SHI_VALUE3] = strsave("");
356 info[SHI_END] = NULL;
363 GetValueFromUser("Enable", &info[SHI_ENABLE]);
364 GetValueFromUser("Value 1", &info[SHI_VALUE1]);
365 GetValueFromUser("Value 2", &info[SHI_VALUE2]);
366 GetValueFromUser("Value 3", &info[SHI_VALUE3]);
370 updatehost(argc, argv)
374 char *info[SHI_END+1];
377 info[SHI_SERVICE] = strsave(argv[1]);
378 info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
379 if (status = do_sms_query("get_server_host_info", 2, info, ghost,
381 com_err(whoami, status, " while getting server/host info");
385 if (status = do_sms_query("update_server_host_info", SHI_END, info,
387 com_err(whoami, status, " while updating server/host info");
397 char *info[SHI_END+1];
400 info[SHI_SERVICE] = strsave(argv[1]);
401 info[SHI_MACHINE] = strsave(canonicalize_hostname(argv[2]));
404 if (status = do_sms_query("add_server_host_info", 6, info, Scream, NULL))
405 com_err(whoami, status, " while adding server/host info");
417 if (status = do_sms_query("delete_server_info", 1, &argv[1], Scream, NULL))
418 com_err(whoami, status, " while deleting server info");
429 argv[2] = canonicalize_hostname(argv[2]);
430 if (status = do_sms_query("delete_server_host_info", 2, &argv[1],
432 com_err(whoami, status, " while deleting server/host info");
437 pserv(argc, argv, count)
442 sprintf(buf, "Service %s", argv[0]);
448 phost(argc, argv, count)
453 sprintf(buf, "Host %s:%s", argv[0], argv[1]);
463 int status, count = 0;
465 argv[0] = argv[2] = "DONTCARE";
467 if ((status = do_sms_query("qualified_get_server", 3, argv, pserv,
469 status != SMS_NO_MATCH)
470 com_err(whoami, status, " while getting servers");
472 argv[1] = argv[2] = argv[3] = argv[5] = "DONTCARE";
474 if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
476 status != SMS_NO_MATCH)
477 com_err(whoami, status, " while getting server/hosts");
479 strcpy(buf, "Nothing is in progress at this time");
481 sprintf(buf, "%d update%s in progress at this time", count,
482 count == 1 ? "" : "s");
490 int status, count = 0;
492 argv[0] = argv[1] = "DONTCARE";
494 if ((status = do_sms_query("qualified_get_server", 3, argv, pserv,
496 status != SMS_NO_MATCH)
497 com_err(whoami, status, " while getting servers");
499 argv[1] = argv[2] = argv[3] = argv[4] = "DONTCARE";
501 if ((status = do_sms_query("qualified_get_server_host",6,argv,phost,
503 status != SMS_NO_MATCH)
504 com_err(whoami, status, " while getting server/hosts");
506 strcpy(buf, "Nothing has failed at this time");
508 sprintf(buf, "%d thing%s ha%s failed at this time", count,
509 count == 1 ? "" : "s", count == 1 ? "s" : "ve");
518 if (status = sms_do_update())
519 com_err(whoami, status, " while triggering update");