在bash中的远程机器上执行echo c> sysrq-trigger

时间:2012-05-30 04:44:33

标签: bash sh

我正在尝试进行以下要求的自动化: -

“从机器A运行命令”echo c> / proc / sysrq-trigger“在机器B上,以便机器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>“

  3. 在这两种情况下都设置了无密码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的帮助。提前谢谢。

2 个答案:

答案 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进程(仅限远程内容)。