Выполнение нескольких операций в одной команде SSH

Хотя я не согласен с аргументом в пользу того, что это «бесполезное использование кошки», там может Причины для этого:

Во многих языках (включая английский) слова и предложения читаются слева направо, поэтому отображение потока данных таким же образом может показаться читателю более естественным.

Причиной появления второго кота могло быть маскирование кода возврата. Например:

$ wc < /etc/passw
sh: /etc/passw: Cannot find or open the file.
$ echo $?
1

В то время как с cat :

$ wc < /etc/passw | cat
sh: /etc/passw: Cannot find or open the file.
$ echo $?
0

Это может быть задействовано, если в оболочке установлено set -e . В первом примере это прервало бы оболочку после wc , тогда как во втором примере она продолжилась бы. Очевидно, есть и другие способы справиться с этим.

Кроме того, разница в производительности двух операторов (то есть с cat или без) незначительна (особенно на современных машинах), и, если это было важно, оболочка - это неправильный язык для использования.

1
08.02.2018, 01:47
2 ответа

Debería escapar de las comillas y separar los dos comandos entre sí.

ssh -t computer.A 'ssh -t computer.B \\'shutdown -p now\\'; shutdown -p now'

Si quería el segundo apagado en la computadora. A solo para ejecutar si el primero fue exitoso, reemplace el ;con &&.

También puede alternar las comillas así:

ssh -t computer.A 'ssh -t computer.B "shutdown -p now"; shutdown -p now'
1
27.01.2020, 23:44

Imagine estar en la computadora A. Quiere apagar la computadora B. ¿Cómo hace esto?

Escribes,

ssh -t computer.B 'shutdown -p now'

Ahora desea ejecutar ese comando ("ssh -t computer.B..." )en su computadora . Debe citarlo, pero en el comando ya hay dos comillas, por lo que debe escapar de ellas:

ssh -t computer.A 'ssh -t computer.B \'shutdown -p now\''

y en realidad desea ejecutar dos comandos, por lo que debe agregarlo dentro de las comillas externas:

ssh -t computer.A 'ssh -t computer.B \'shutdown -p now\'; shutdown -p now'

Si desea iterar esto conectándose a su computadora desde el exterior, simplemente enjuague y repita:

  • primera etapa, escape todas las comillas y todas las barras , por lo que \se convierte en \\y 'se convierte en \'. Lo que significa que \'se convierte en\\\':

    ssh -t computer.A \'ssh -t computer.B \\\'shutdown -p now\\\'; shutdown -p now\'
    
  • segunda etapa :encerrar entre comillas, agregar el comando de apagado y anteponer la instrucción ssh:

    ssh -t mycomputer 'ssh -t computer.A \'ssh -t computer.B \\\'shutdown -p now\\\'; shutdown -p now\'; shutdown -p now'
    
0
27.01.2020, 23:44

Теги

Похожие вопросы