Ваша работа была бы намного проще, если бы вы просто создали сценарий в другой системе, который делал то, что вы хотели, а затем вызвали этот сценарий без каких-либо параметров. Альтернативой является создание сценария на другой стороне, который показывает, какие параметры он получает, что-то вроде echo _args.sh:
#!/bin/ksh
echo "$0 $@"
ARG=1
while [ $# -gt 0 ]
do
echo "$ARG: $1"
shift
(( ARG++ ))
done
Тогда вы можете позвонить:
ssh tomcat@rmgdmzwebapp02.dmz.local bin/echo_args.sh -f -u \'INFORMATION \\[main\\] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler \\[\\\"ajp-nio-8009\\\"\\]\' /opt/tomcat/logs/catalina.out
и вы получите:
bin/echo_args.sh -f -u INFORMATION \[main\] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler \[\"ajp-nio-8009\"\] /opt/tomcat/logs/catalina.out
1: -f
2: -u
3: INFORMATION \[main\] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler \[\"ajp-nio-8009\"\]
4: /opt/tomcat/logs/catalina.out
, который показывает, что параметры правильно поступают на другую сторону. Теперь вы просто заменяете echo _args.sh своей розничной программой:
ssh sshuser@my-server.net.bar /bin/retail -f -u \'INFORMATION \\[main\\] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler \\[\\\"ajp-nio-8009\\\"\\]\' /opt/tomcat/logs/catalina.out
Есть как минимум три варианта:
cp -R /usr/lib/locale/C.UTF-8 /usr/lib/locale/X.UTF-8
cat /usr/share/i18n/locales/C | sed 's/first_weekday 1/first_weekday 2/g' | localedef --add-to-archive /usr/lib/locale/X.UTF-8 -i -
LC_TIME=X.UTF-8 locale first_weekday
Итак, вы копируете существующее определение, просто ленивый способ воссоздать структуру папок, затем из исходного C.UTF -8 (имя просто "C" )вы меняете строку, которую хотите изменить (можно было бы и короче, но так читабельнее ).
cat /usr/share/i18n/locales/C | sed 's/first_weekday 1/first_weekday 2/g' | localedef --add-to-archive /usr/lib/locale/C.UTF-8 -i -
LC_TIME=C.UTF-8 locale first_weekday
В зависимости от вашей системы не все языки доступны сразу. Итак, во-первых, убедитесь, что у вас есть _GB.UTF -8 доступных (, иначе вы получите сообщение об ошибке «Невозможно установить LC _ALL на язык по умолчанию»):
locale -a
если нет, то добавьте. Поскольку нет информации о вашей системе, я не могу сказать вам, как это сделать. В Debian/Ubuntu вы можете выполнитьdpkg-reconfigure locales
(или отредактировать /etc/locale.gen
, чтобы добавить локаль, или, скорее всего, просто раскомментировать ее, а затем запуститьlocale-gen
).
Как только en _GB.UTF -8 появится в списке доступных локалей, вы можете установить:
LC _TIME=en _GB.UTF -8
LC_TIME=en_GB.UTF-8 locale first_weekday
должно вернуть 2
В этом документе Debian содержится дополнительная информация о том, как сделать изменение постоянным для различных сред.