Как выполнить скрипт .sh на удаленном сервере (linux & ubuntu), используя PuTTY в windows

PuTTY не нуждается в представлении, так как это одна из широко удаленных консольных утилит. PuTTY — это клиент SSH и telnet.

Хотя использовать консоль уже просто и легко, вы, скорее всего, иногда ошибаетесь (и случайно удаляете папку проекта). Вы можете автоматизировать задачи вашего сервера, не вводя все, что вам нужно каждый день (перейдите в папку, сделайте что-нибудь там, затем выйдите, перейдите к другим и т. Д.).

Сделать это легко для вас и вашей команды. В этой статье вы узнаете, как выполнить сценарий оболочки из windows на удаленный сервер, используя PuTTY и командную строку windows.

Создание файла .sh

Обычно файл .sh представляет собой скрипт оболочки, который вы можете выполнить в терминале. Этот формат файла обычно используется для файлов оболочки Unix, созданных утилитой Unix shar.

Насколько это безопасно?

Может показаться странным, что для выполнения файла вам нужно выполнить еще одну задачу вручную. Но это частично из-за сильной потребности в безопасности.

По сути, когда вы загружаете и запускаете скрипт bash, это то же самое, что кто-то говорит вам: «Запустите все эти команды последовательно на вашем компьютере, я обещаю, что результаты будут хорошими». Спросите себя, доверяете ли вы стороне, предоставившей этот файл, спросите себя, уверены ли вы, что скачали файл из того же места, что и думали, возможно, даже загляните внутрь, чтобы увидеть, выглядит ли что-то неуместным (хотя для этого нужно знать что-то о * nix командах и программировании bash).

Заключение : выполнять только те команды, которые вы знаете, и только если вы знаете, как они работают.

Для начала создайте файл где-нибудь с расширением .sh (command_file.sh) где-то. Затем напишите сценарий оболочки.

В этом примере (самом базовом) мы собираемся напечатать дату в консоли Putty.

# command_file.sh
#Print the date in putty
echo `date`
# Don't close putty to see the output of the date
read -rsp $'Press any key to continue...\n' -n1 key

Это было действительно просто, не так ли?

Если хотите, начните создавать свои собственные, в следующем примере показано базовое взаимодействие с командами, которые вы обычно выполняете, используя putty (команда subversion svn update):

Замечания: так как вы впервые создаете файл .sh для выполнения, убедитесь, что вы делаете все возможное, чтобы предотвратить любой ущерб, который вы можете нанести вашему серверу. Мы рекомендуем вам тестировать только с предыдущим скриптом, а когда у вас будет больше опыта, попробуйте с собственным.

# command.sh
# Create a variable named directoryPath
# it contains where your project is located
directoryPath=/var/www/vhosts/myproject
# Go to the project using the cd command
cd $directoryPath
# Update using subversion command
svn update
# Ready ! that was all.
# But let's make something else !
# Delete the content from a folder in the project
# Note: the folder name is "deleteMe" and it is inside /myproject
# Therefore the path is relative to where we are located.
# Real path of folder = /var/www/vhosts/myproject/deleteMe
folderToDelete=deleteMe
#Navigate to the deleteMe folder
cd $folderToDelete
#Delete content using rm command
rm -rf *
# Piece of cake !

Начните читать больше обо всех вещах, которые вы можете делать с файлами .sh на вашем сервере. Теперь, когда наш скрипт готов, нам просто нужно научиться выполнять его автоматически.

Выполнение сценария с использованием PuTTY из командной строки Windows

Теперь, когда ваш файл сценария готов, и (теоретически) вы знаете, чего хотите добиться с ним, нам просто нужно выполнить его и сэкономить много драгоценного времени.

Структура команды следующая:

putty.exe [connection (-ssh)] [username@serverIP-or-Domain] [parameter (-pw password)] [parameter (-m (read a remote command or script from a file) sh file to local path)]

-m опция ожидает, что ей будет присвоено имя локального файла, и она будет читать команду из этого файла.
На некоторых серверах (особенно в системах Unix) вы даже можете поместить в этот файл несколько строк и выполнить несколько последовательных команд или целый сценарий оболочки; но это возможно злоупотребление, и нельзя ожидать, что оно будет работать на всех серверах. В частности, известно, что он не работает с некоторыми «встроенными» серверами, такими как маршрутизаторы Cisco.
Эта опция недоступна в инструментах передачи файлов PSCP и PSFTP.

Вся команда может быть легко выполнена в командной строке (cmd.exe) в Windows, например:

C:\path\to\putty.exe -ssh username@192.0.0.0.0 -pw "password" -m "C:\path\to\command_sh_script_file.sh"
# Example
C:\Program Files\Putty\putty.exe -ssh user@192.x.x.x.x -pw "ComplexPassword" -m "C:\Users\Admin\Desktop\command_file.sh"

Замечания : вместо того, чтобы использовать полный путь к исполняемому файлу putty, вы можете определить переменную окружения для putty в windows, а затем использовать ее как %putty%,

Откройте cmd.exe и выполните команду, заменяя соответственно учетные данные и параметры:

реализация шпаклевки cmd.exe

Наконец, после выполнения вашей команды в cmd.exe, будет открыта putty, и ваш скрипт будет выполнен, как мы сделали с первым примером, в консоли будет напечатана дата сервера:

Shell Script

Совет : вы можете создать интерфейс, используя другой язык, такой как C #, чтобы автоматизировать еще больше одним щелчком мыши

Повеселись .

Захват выхода замазки (опционально)

Если ваш bash-скрипт не прост (он может генерировать вывод с информацией об ошибках, информацией и т. Д.), Вы можете сохранить контент для анализа, когда выполнение скрипта будет закрыто.

Так как putty обычно закрывает консоль, если нет оператора, который приостанавливает ее, когда выполняется последняя строка вашего скрипта, и нет способа перенаправить вывод (но достижимо с помощью утилиты plink), нам нужно указать эту задачу в приложении PuTTY.

1) Откройте замазку, нажмите на верхнюю иконку и выберите изменить настройки.

Шаг 1 Журнал замазки во внешнем файле

2) Нажмите на элемент ведения журнала в правом списке. Теперь выберите опцию All output output в области входа в сеанс.

Шпаклевка, шаг 2, вывод журнала во внешний файл

Наконец, выберите путь к файлу putty.log в вашей системе и нажмите «Применить».

Весь вывод, сгенерированный замазкой, будет записан в этот файл журнала.

Ссылка на основную публикацию
Adblock
detector