我正在尝试进行以下要求的自动化: -
“从机器A运行命令”echo c> / proc / sysrq-trigger“在机器B上,以便机器B崩溃,机器B启动后(崩溃后)执行其他操作,例如将文件从机器b复制到机器A.”
为此,我尝试了以下两种方法: -
“ssh -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no -l root”sh // proc / sysrq-trigger command>“
“ssh -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no -l root”sh echo c> / proc / sysrq-trigger>“
在这两种情况下都设置了无密码ssh或将通过expect提供密码。所以密码在这里不是问题。问题是在远程机器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: - 为这个冗长的查询道歉。 Plz的帮助。提前谢谢。
答案 0 :(得分:1)
首先在两个系统之间创建无密码ssh,然后从源计算机执行以下命令,从而实现此目的。
ssh -l root <remote machine> "echo c > /proc/sysrq-trigger" &
答案 1 :(得分: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
,-t
或-T
选项,但这样可以吸引人。如果您使用-f
或-n
,请不要使用本地ssh
进程(仅限远程内容)。