Как я могу изменить файл ssh_config на Linux-хосте с помощью perl? - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть интересная проблема, мой скрипт использует ssh для доступа к моему серверу vmware для получения данных с него.Я обнаружил, что если компьютер, на котором выполняется сценарий, никогда не подключался к серверу, сценарий не будет работать, потому что вопрос, спрашивающий, следует ли добавить хост, к которому я подключен, в мой известный файл hosts.

На основечитая некоторые форумы и тому подобное, и людей, имеющих аналогичную проблему, у меня возникла идея.Я хотел изменить файл ssh_config на «хосте скрипта», чтобы исключить проверку известного хоста для хоста, указанного в файле конфигурации.Это будет сделано с помощью скрипта конфигурации, который я задаю вам, который задает вам различные вопросы, которые генерируют файл конфигурации xml.

Теперь для решения проблемы ...

Мне нужно изменить файл конфигурации, яЯ думал, что проще всего будет перетянуть файл в perl и манипулировать им.Slurping я делал раньше, но в соответствии с тем, что я прочитал, директива для отключения определенных опций ssh ​​на перкулярном хосте должна идти перед директивой глобальных опций.

Как вставить текст между двумя блоками текста втекущий файл?

Вот так выглядит мой ssh_config

# This is the ssh client system-wide configuration file.  See
# ssh_config(5) for more information.  This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.

# Configuration data is parsed as follows:
#  1. command line options
#  2. user-specific file
#  3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.

# Site-wide defaults for some commonly used options.  For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.

**--This is what my modification need to go--**

Host *
#   ForwardAgent no
#   ForwardX11 no
#   ForwardX11Trusted yes
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   GSSAPIKeyExchange no
#   GSSAPITrustDNS no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   Port 22
#   Protocol 2,1
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160

1 Ответ

1 голос
/ 06 апреля 2011

Вы можете получить доступ к строкам файла через массив Perl с модулем Tie::File. Например, чтобы вставить строку, используя смещение:

use Tie::File;
tie @array, 'Tie::File', $file or die "Can't tie $file";
splice @array, $offset, 0, $line;

Вы также можете перебирать массив и т. Д. Изменения в массиве немедленно отражаются в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...