На самом деле вам не нужны "HERE"
документы, например, вы используете один оператор case, который принимает стандартный ввод для вашей команды SSH. принимать одинарные кавычки в качестве входных данных для ssh
Это позволяет вам делать многострочный ввод в спокойной обстановке. Цитирование вашего "EOF"
и завершение его также допустимо.
#!/bin/bash
case "$1" in
"env1")
ssh -tt weblogic@hostname1 <<< '
case "$server" in
"ManagedSvr1")
cat /var/log/syslog
;;
"ManagedSvr2")
tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr2/logs/ManagedSvr2.log
;;
esac '
;;
"env2")
ssh -tt weblogic@hostname2 <<< '
case "$server" in
"ManagedSvr1")
tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr1/logs/ManagedSvr1.log
;;
"ManagedSvr2")
tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr2/logs/ManagedSvr2.log
;;
esac '
;;
esac
Это был бы более простой способ управления сценарием. Тем более, что вы не используете удаленное изменение пользователя: позволяет установить все переменные локально, а затем просто подключиться и выполнить одну команду.
#!/bin/bash
server="$2"
case "$1" in
"env1")
hostname="hostname1"
case "$server" in
"ManagedSvr1")
remote_command=$(tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr2/logs/ManagedSvr1.log)
;;
"ManagedSvr2")
remote_command=$(tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr2/logs/ManagedSvr2.log)
;;
esac
;;
"env2")
hostname="hostname2"
case "$server" in
"ManagedSvr1")
remote_command=$(tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr1/logs/ManagedSvr1.log)
;;
"ManagedSvr2")
remote_command=$(tailf /app/Oracle/Middleware/domains/dq/servers/ManagedSvr2/logs/ManagedSvr2.log)
;;
esac
;;
*)
exit 1
;;
esac
if [[ $? == 0 ]]
then ssh weblogic@$hostname $remote_command
fi
Для получения информации о глобальном курсоре используйте GetCursorInfo.
Используйте (в Delphi)
Screen.MouseCursor.
Для текущего курсора мыши.
Общий Win32 (user32) дает:
function GetCursor: HCURSOR; stdcall;
Это должно быть доступно для других win32 языков.
Править: В Delphi
В большинстве визуальных объектов можно использовать свойство Cursor, иначе использовать Экран. Курсор propery. Задержка его к crDefault canceles изменение в том, что это было установлено прежде.