Переменная, присвоенная внутри ssh команда, не возвращает собственное значение

yum install curl

Я получаю ошибку, которой не может быть найдена конфетка команды

Вы root? Возможно что Ваш $PATH не содержит /sbin:/usr/sbin? Попробовать /sbin/yum и /usr/sbin/yum удостоверяться, что это не a $PATH проблема.

Я не эксперт CentOS, но если Вы на самом деле работаете как root, и yum действительно не установлен и работа, затем Ваша система может быть серьезно повреждена.Насколько мне известно, yum диспетчер пакетов по умолчанию CentOS и должен абсолютно оба существовать и работать.

~/git/usr/bin/git

Это - очень странный путь. Похоже, что Вы вручную извлекли git пакет в Ваш корневой каталог?

error while loading shared libraries: libcurl.so.3

Ну, при извлечении пакета вручную он, вероятно, теперь отсутствует curl библиотека, что git пакет зависит от. Вы могли попытаться извлечь эту библиотеку также, но просто поместить ее в Ваш корневой каталог волшебно не заставит ее работать... необходимо будет, вероятно, играть с $LD_LIBRARY_PATH заставить это работать, который, по моему опыту, не очень легок.

Если можно добраться yum работа и затем использует его для установки 'пакета мерзавца правильно, это решило бы эту проблему для Вас.

3
23.06.2014, 23:41
2 ответа

Используйте скрипт, чтобы избежать путаницы в команде с вопросами кавычек.

Он более чистый, более управляемый и выглядит лучше :)!

Например, просто сделайте так:

echo "Enter source file"
read src_file
ssh user@server 'bash -s' < /path/to/local_script.sh "$src_file"

Содержимое local_script.sh:

#!/bin/bash
src_file="$1"
src_size =`ls -latr $src_file | awk  '{ print $5 }'`
echo "The source file size is $src_size "

Не забудьте добавить путь к вашему local_script.sh:)

:)

.
3
27.01.2020, 21:16

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

Что-то более похожее должно делать то, что вы пытаетесь сделать:

ssh user@server 'echo "Enter file: "; read src_file; echo "Enter path: "; read path; cd $path; src_size=`ls -latr $src_file | awk  "{ print \$5 }"`; echo "The source file size is $src_size;"'

Обратите внимание, что мне нужно было изменить '{ распечатать $5 }' на "{ распечатать \$5 }", экранируя $, потому что теперь он внутри двойных кавычек, а не одинарных, и я не хочу, чтобы $5 интерпретировался оболочкой командной строки.

2
27.01.2020, 21:16

Теги

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