Вам нужно экранировать символы, которые не должны интерпретироваться вашей локальной оболочкой, а именно "`" и "$ "
Вместо:
ssh User@Server " line=`last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 `;login=`echo $line | awk '{print $1}'`dm;user=`getent passwd $login` ;echo $line ; echo $user "
Делать:
ssh User@Server " line=\`last -F | grep -vE '^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)' | head -1 \`;login=\`echo \$line | awk '{print $1}'\`dm;user=\`getent passwd \$login\` ;echo \$line ; echo \$user "
Вы также можете заключить в одинарные кавычки всю команду ssh. Затем вам нужно только заменить одинарные кавычки команд awk
и grep
на двойные кавычки :
ssh User@Server ' line=`last -F | grep -vE "^(svc_qual|s594998a|reboot|s823850a|s825722a|s559857a|s603256a|root|s823656a|s230281a|s638181a|s835786a)" | head -1 `;login=`echo $line | awk "{print $1}"`dm;user=`getent passwd $login` ;echo $line ; echo $user '
В целом то, что вы испытываете , может быть нормальным при использовании IPv6.
В вашем случае «любой адрес» привязан к IPv6, а адрес «localhost» привязан к IPv4. Это совершенно нормально, если приложение, привязанное к «любому адресу» IPv6, установило параметр сокета IPV6_V6ONLY
.
В Linux также существует общесистемное -значение по умолчанию для этой опции, которое можно просмотреть и установить в /proc/sys/net/ipv6/bindv6only
и значением по умолчанию является 0
, что позволяет IPv4 и IPv6 совместно использовать пространство номеров портов TCP/UDP..
Также обратите внимание, что тот факт, что ваш сокет 127.0.0.1:34797 LISTEN
помечен tcp6
, не имеет отношения к этой цели, поскольку он считается адресом IPv4, даже если он поддерживается сетевым стеком IPv6. Это тоже стандартное -совместимое поведение .
Результатом в вашем случае является то, что TCP-подключения к 127.0.0.1:34797
будут доставляться вашему приложению java
, а подключения к тому же порту, но к любому из IPv6-адресов вашей машины, будут доставляться на сервер блокировки NFS.
Что касается того, почему именно разработчики NFS выбрали именно это 1 Я не знаю, но это не относится только к NFS :см., например, демон OpenSSH, который связывает IPv4 и IPv6. адреса отдельно (по умолчанию оба «любые адреса», IPv4 0.0.0.0
и IPv6::
).
Кроме того, некоторые операционные системы даже не поддерживают параметр IPV6_V6ONLY
(. они не позволяют установить его ), и единственное поведение, которое вы получаете в этих системах, — это полное разделение пространства номеров портов между IPv4 и IPv6, поэтому приложения должны привязывать один и тот же порт дважды, если они хотят поддерживать оба IPv4 и IPv6.
1.Я не исследовал полностью, но здесьявляются , возможно, соответствующие фрагменты кода