После нескольких часов поисков я смог решить эту проблему. Оказывается, это было установлено через DHCP:
nmcli -f ip4 device show eth0
IP4.ADDRESS[1]: 172.31.53.162/20
IP4.GATEWAY: 172.31.48.1
IP4.DNS[1]: 172.31.0.2
IP4.DOMAIN[1]: ec2.internal
Я смог переопределить IP4.DOMAIN [1], переопределив значение ipv4.dns-search сетевого интерфейса:
nmcli connection modify uuid \`nmcli connection show --active | grep 802-3-ethernet | awk '{print $(NF-2)}' | tail -n 1` ipv4.dns-search d.sample.com
Или, проще говоря,
nmcli connection modify System\ eth0 ipv4.dns-search "d.sample.com"
Тогда у вас есть Чтобы перезапустить NetworkManager
systemctl restart NetworkManager.service
, я также обнаружил, что, поскольку я работал с экземпляром Amazon, мне нужно обновить файл cloud.cfg.
Это могло быть проще упростить команду, чтобы у вас было меньше специальных символов, которыми оболочка могла бы подавиться:
ssh jboss@myTargetServer 'ps -p $(cat /var/run/jboss-as/jboss-as-standalone8.pid) -o %cpu= 2>/dev/null'
Завершающий 2> / dev / null
отбрасывает текст ошибки в том случае, если файл PID либо не может может быть найден или содержит устаревший PID.
Я бы рекомендовал поместить эти команды в сценарий, который вы вызываете удаленно с помощью ssh
. В противном случае вам нужно было бы заключить всю «удаленную» часть командной строки в кавычки и правильно экранировать все внутри. Это может быть утомительно и чревато ошибками. Вот почему удаленный вызов скрипта.
Вторая команда в том виде, в котором она есть, запускает часть кода ( $ ()
) в локальной подоболочке. Вам нужно заставить его работать на другой стороне, экранируя специальные символы (в основном $
):
ssh jboss@myTargetServer tmpValue=\$(cat /var/run/jboss-as/jboss-as-standalone8.pid) \
&& top -b -U jboss -n 1 |grep \$tmpValue |awk '{print $9}'
или помещая все это в апострофы '
и экранируя внутренние:
ssh jboss@myTargetServer 'tmpValue=$(cat /var/run/jboss-as/jboss-as-standalone8.pid) \
&& top -b -U jboss -n 1 |grep \$tmpValue |awk \'{print $9}\''
Я не тестировал это, но это основная идея, что нужно сделать, чтобы это исправить.
Если вы действительно не хотите писать сценарии, вы можете найти здесь
документ . Короче говоря, вы добавляете << SOMETEXMARKER
в конец строки и продолжаете вводить столько команд для удаленного хоста, сколько хотите.
Затем в последней строке, которую вы вводите (в самой начало строки)
тот же SOMETEXTMARKER
, заставляющий введенные команды выполняться удаленно
Вот пример
[bobby@bobby ~]$ ssh jimmy@jimmy << MRK '
> # single quote above makes all vars resolve on remote host
> echo remote user and host are :
> echo $USER $(hostname)
> # entereing closing single quote
> '
> # finally entereing the marker
> MRK
remote user and host are :
jimmy jimmy