Как заставить мой скрипт работать точно так же, как моя команда терминала?

Следующий сценарий perlиспользует модульDigest::MD5илиDigest::SHAдля преобразования MAC-адреса в хэш с использованием секретной соли. См. справочные страницы модулей для получения более подробной информации о них. Стоит отметить, что у Digest ::SHA есть еще несколько алгоритмов на выбор.

Код написан так, чтобы упростить выбор другого алгоритма хеширования. -Раскомментируйте один и закомментируйте остальные, чтобы выбрать наиболее подходящий. Кстати, вывод версий функций _base64немного короче, чем у функций _hex, но больше похож на шум строки -.

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

#!/usr/bin/perl

# choose one of the following digest modules:
use Digest::MD5 qw(md5_hex md5_base64);
#use Digest::SHA qw(sha256_hex sha256_base64);

use strict;

my $salt='secret salt phrase';

# store seen MAC addresses in a hash so we only have to calculate the digest
# for them once.  This speed optimisation is only useful if the input file
# is large AND any given MAC address may be seen many times.
my %macs=();

while(<>) {
  if (m/clientMac:\s*([A-Z0-9]{12})/i) {
    my $mac = $1;

    if (!defined($macs{$mac})) {
      # choose one of the following digest conversions:

      #my $uuid = sha256_hex($mac. $salt);
      #my $uuid = sha256_base64($mac. $salt);
      my $uuid = md5_hex($mac. $salt);
      #my $uuid = md5_base64($mac. $salt);

      $macs{$mac} = $uuid;
    };

    s/(clientMac:\s*)$mac/$1$macs{$mac}/gio;
  };
  print;
};

1
27.08.2021, 14:00
1 ответ

The box is behind a corporate proxy.

Couldn't find host github.com in the.netrc file; using defaults

connect to 140.82.121.4 port 443 failed: Verbindungsaufbau abgelehnt

The script is run with sudo and fails, but the command git fetch origin [branch-name] will work in the terminal

Угадай :Вашему корпоративному прокси-серверу нужны учетные данные, которые хранятся где-то под вашей учетной записью пользователя, возможно, в файле .netrc.

Если вы запустите команду git от имени обычного пользователя, она получит доступ к этим учетным данным.

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

Вы можете проверить, выполнив команду git с sudoиз терминала; если вышеописанное является причиной, он также потерпит неудачу.

Чтобы решить вашу проблему,вам нужно объяснить, почему вы хотите запустить скрипт от имени root, которому требуются учетные данные вашего обычного пользователя для доступа к github (, что звучит как фундаментальная проблема проектирования, которую следует решить в первую очередь ). В зависимости от объяснения, вы можете дать root-учетные данные для прокси (неразумно ), выдавать себя за конкретного пользователя внутри скрипта для выполнения команд git или, и это лучший вариант, исправить все, что требует root-доступа, чтобы он не не нужен root-доступ, и его можно запускать от имени обычного пользователя.

1
27.08.2021, 15:04

Теги

Похожие вопросы