Сжатая файловая система - Другое решение состоит в том, чтобы иметь дело со сжатием слой ниже веб-сервера и файлов - на уровне файловой системы.
Я не сделал со мной, но можно испытать что-то как fusecompress - поэтому выделите Ваш www
если Вы уже не имеете и делаете это сжатой какой-то фс.
Очевидно, это будет стоить Вам в некоторой производительности, но если процессор достоин, то это могло бы быть в порядке.
Вы хотите использовать, ожидают для этого. Это, вероятно, уже находится на Вашей машине. Это - стандартный инструмент для любого вида интерактивной автоматизации командной строки. Это - библиотека Tcl, таким образом, Вы получите некоторые навыки Tcl по пути бесплатно.Остерегайтесь; это захватывающе.
#!/path/to/expect
spawn ssh user@example.com "mysql -u blub"
expect "*ssword:*"
send -- "mypass\r"
interact
Попытайтесь использовать <.
ssh user@example.com "mysql-u плач-p" <файл
Если первая строка в "файле" является Вашим паролем, это "должно" использовать это для подсказки пароля, то остальные будут использоваться для sql части.
При простом выполнении sql файла на удаленном сервере попробуйте:
ssh user@example.com "mysql-u плач-p <file.sql" <пароль
Я изучал базовую проблему несколько лет назад. Я хотел инициировать загрузку SCP из сессии SSH. Как Ваша проблема, это требует коммуникации из сессии SSH назад к некоторому процессу на клиенте.
Таким образом, вот третье возможное решение: Подключение с помощью обертки вокруг SSH, который сканирует вывод SSH и инициировал определенные команды локально, когда это распознает шаблон. Это - ясно взлом, но это могло бы добиться цели.
Я закончил с измененной версией/usr/bin/script, который будет помнить мое соединение SSH (например. me@somehost
), и каждый раз, когда моя ssh сессия распечатана ###/some/absulte/path/to/file/on/host.txt###
, это локально выполнилось бы scp me@somehost:/some/absulte/path/to/file/on/host.txt .
Простой сценарий оболочки использовался для удобного создания шаблона и полного пути на сервере.
(Мой код на самом деле сделал немного больше: Это открыло локальный текстовый редактор на загруженном файле и повторно загрузит его с помощью SCP, когда файл был изменен. Сообщите мне, хотите ли Вы код.)
Я искал более хорошую реализацию этого с тех пор, но не нашел то до сих пор.
Возможно, эта техника могла быть реализована как команда прокси SSH (думайте connect.c) вместо обертки вокруг SSH.
Для этой определенной проблемы возможно, можно ли просто поместить пароль в ~/my.cnf файл на сервере?
Для Вашей идеи: необходимо использовать выход, чтобы заставить это работать:
ssh dba@db "echo \`ssh sven@192.168.2.10 \"cat echofile\" \`"
Отредактируйте снова: Вы будете neeed вход в систему без пароля от сервера до клиента, имея в виду закрытый ключ для Вашего клиентского поля на сервере, который еще менее безопасен, чем my.cnf.
Необходимо эмулировать терминальный сеанс:
ssh -t user@example.com "mysql -u blub -p"
В этом случае Вас попросят пароля, которые перемещаются сеть через зашифрованный ssh-канал, и это не будет отображено в консоли.
Необходимо было бы выполнить оболочку сначала, что-то как
ssh user@exampl.com bash -c 'mysql -u user -p$(cat /root/pass_file)'
Вы используете ssh
вместо telnet
но все еще отправьте пароль посредством команды, чтобы быть свободно выполненными на удаленной машине в открытом тексте (видимый на a ps
список там).
Прочитанный эта статья SecurityFocus о MySQL Securing.
Хорошо, я думаю, что могу с некоторой уверенностью говорить, что, что Вы wan't, чтобы сделать не возможны общим способом, существуют только обходные решения для этого, которые зависят от фактической проблемы, которую Вы хотите решить.
Думая об этом немного больше, я решил бы "проблему в качестве примера", Вы дали просто путем выполнения перенаправления портов через ssh от клиента к серверу и затем использования локального mysql клиента с локальным my.cnf, который на самом деле является способом, которым я всегда работаю с mysql.
Вы могли использовать переменные среды на своей локальной машине. Это открыло бы безопасность vulnerbilities, если кто-то на Вашей локальной машине видит Вашу среду. и любой на сервере видит пароль.
PASSWORD=$(cat pass-file) ssh user@example.com "mysql -u blub -p$PASSWORD"
Я думаю при помощи одинарных кавычек, значение для переменной среды будет принято от удаленной машины. Таким образом, можно установить PASSWORD=value в .bashrc на удаленной машине. Затем на Вашей локальной машине выполненный ssh user@example.com '. ~/.bashrc; mysql-u-p$PASSWORD плача'
Установить sshpass (yum install)
sshpass -p password ssh user@host.com
Если вы не хотите беспокоиться о ключах отпечатков пальцев, добавьте
sshpass -p password ssh -o StrictHostKeyChecking = no user@host.com
Вы можете заставить bash интерпретировать параметр как команду и загрузить ваш пароль перед его отправкой по SSH
MY_PASSWORD=abcde ssh user@example.com `echo mysql -p$MY_PASSWORD`