2

我正在尝试做一些自动化,其中以下是要求:-

“在机器 B 上从机器 A 运行命令“echo c > /proc/sysrq-trigger”,以便机器 B 崩溃,并且在机器 B 启动后(崩溃后)执行一些其他操作,例如将文件从机器 b 复制到机器 A。”

为此,我尝试了以下两种方法:-

  1. "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -l root "sh //proc/sysrq-trigger command>"

  2. "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -l root "sh echo c >/proc/sysrq-trigger >"

在这两种情况下,无密码 ssh 都已设置或将通过期望提供密码。所以密码在这里不是问题。问题是在远程机器B上执行sysrq指令后控制卡住了。它不会回到机器A上,这样我就可以在同一个终端上执行任何其他操作。

# ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -l root <Machine B> "echo c > /proc/sysrq-trigger " 

警告:将“ca-ostest212.us.oracle.com,139.185.48.212”(RSA) 永久添加到已知主机列表中。root@的密码:

提供密码后,机器 B 崩溃并重新启动,但机器 A 上的提示没有回来。有没有办法解决这个问题,以便提示回来并在机器 A 上执行下一个命令。

PS :- 为这个冗长的查询道歉。请帮忙。提前致谢。

4

2 回答 2

1

通过首先在 2 个系统之间创建无密码 ssh 然后从源计算机执行以下命令来实现这一点。

ssh -l root <remote machine> "echo c > /proc/sysrq-trigger" &
于 2012-10-06T12:35:50.413 回答
0

我会尝试这样的事情,看看它是否有效:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -l root <Machine B> "{ sleep 2; echo c > /proc/sysrq-trigger; } & exit"

或者

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -l root <Machine B> "nohup sh -c 'sleep 2; echo c > /proc/sysrq-trigger' & exit"

这个想法是在崩溃的背景下做一个短片sleep并立即返回。您可以尝试改变sleep间隔。您也可以尝试-f、或选项-n,但那是在抓住稻草。如果您使用or ,请不要后台处理本地进程(仅限远程内容)。-t-T-f-nssh

于 2012-05-31T01:56:04.227 回答