Я предлагаю вам сначала удалить все установки nodejs, а затем выполнить сценарий ниже, как только вы редактируете нужную версию nodejs, и родительский каталог установки
см. все доступные версии nodejs
https: // nodejs.org/dist/
ниже сценарий позволит вам установить любую из этих версий nodejs в Linux или OSX
#!/bin/bash
# usage :
#
# edit two vars in below : NODE_VER and CODE_PARENT_DIR
#
# ... execute this script as yourself unless you choose a root owned value for var CODE_PARENT_DIR
# whichever id you execute this as determines the id you will issue npm commands as : npm install -g foo-bar
#
# NOTE - nodejs comes bundled with npm ... so no need to do separate npm install
# this scripts runs fine on linux or OSX
# ... copy all the lines starting here .. top of copy .... and ending ... end of copy ...
# and paste into your ~/.bashrc file so proper env vars get set
# ............... top of copy ........................ install_node.sh
# export NODE_VER=v7.2.0 # see available versions at https://nodejs.org/dist/
# export NODE_VER=v8.5.0 # edit this line next time you need to update nodejs
export NODE_VER=v9.3.0 # edit this line next time you need to update nodejs
# ... pick parent dir of nodejs install ... comment out or remove ONE of below
# export CODE_PARENT_DIR=/opt/code # root owned dir ... requires you to sudo prior to npm install going forward
export CODE_PARENT_DIR=${HOME} # RECOMMENDED execute as yourself including npm install
# ......... following env vars are OK no edits needed ... only ever need to edit above vars
curr_OS=$( uname )
echo curr_OS $curr_OS
if [[ "${curr_OS}" == "Darwin" ]]; then
OS_ARCH=darwin-x64
elif [[ "${curr_OS}" == "Linux" ]]; then
OS_ARCH=linux-x64
else
echo "ERROR - failed to recognize OS $curr_OS"
exit 5
fi
if [[ -z ${CODE_PARENT_DIR} ]]; then
echo "ERROR - failed to see env var CODE_PARENT_DIR"
exit 5
fi
export NODE_CODEDIR=${CODE_PARENT_DIR}/nodejs
export COMSUFFIX=tar.gz
export NODE_NAME=node-${NODE_VER}
export NODE_PARENT=${NODE_CODEDIR}/${NODE_NAME}-${OS_ARCH}
export PATH=${NODE_PARENT}/bin:${PATH}
export NODE_PATH=${NODE_PARENT}/lib/node_modules
# ............... end of copy ........................ install_node.sh
# copy and paste above from ... top of copy ... to here into your file ~/.bashrc
echo
echo "NODE_CODEDIR $NODE_CODEDIR<--"
echo
echo "mkdir -p ${NODE_CODEDIR}"
echo
mkdir -p ${NODE_CODEDIR}
echo
echo "cd ${NODE_CODEDIR}"
cd ${NODE_CODEDIR}
echo
# this is compiled code NOT source
[ -f ${NODE_NAME}-${OS_ARCH}.${COMSUFFIX} ] && rm ${NODE_NAME}-${OS_ARCH}.${COMSUFFIX} # if file exists remove
echo "wget -q --show-progress https://nodejs.org/download/release/${NODE_VER}/${NODE_NAME}-${OS_ARCH}.${COMSUFFIX}"
wget -q --show-progress https://nodejs.org/download/release/${NODE_VER}/${NODE_NAME}-${OS_ARCH}.${COMSUFFIX}
echo
echo "tar -C ${NODE_CODEDIR} -xf ${NODE_NAME}-${OS_ARCH}.${COMSUFFIX}"
tar -C ${NODE_CODEDIR} -xf ${NODE_NAME}-${OS_ARCH}.${COMSUFFIX}
echo
[ -f ${NODE_NAME}-${OS_ARCH}.${COMSUFFIX} ] && rm ${NODE_NAME}-${OS_ARCH}.${COMSUFFIX} # if file exists remove
# ........... done ........... #
which node
node --version
# .... bottom of file install_node.sh
Вот быстрый и грязный один лайнер: Содержание ip-addresses.txt:
$ cat ip-addresses.txt
1.2.3.4
1.1.1.1
222.222.222.222
23.12.34.56
8.8.8.8
208.67.222.220
Замените txt вашим файлом, который содержит адреса, разделенные символами новой строки:
$ cat ip-addresses.txt | xargs -I % bash -c 'echo "%:$(dig -x % +short)"' >> dig-output.txt
Если вы добавите к dig-output.txt, как указано выше, содержимое этого файла будет выглядеть следующим образом, если обратный поиск в DNS будет успешным, IP:NAME, если нет, IP:(NULL)
$ cat dig-output.txt
1.2.3.4:
1.1.1.1:
222.222.222.222:
23.12.34.56:a23-12-34-56.deploy.static.akamaitechnologies.com.
8.8.8.8:google-public-dns-a.google.com.
208.67.222.220:resolver3.opendns.com.
[d3 ] Если IP-адреса поступают из другого процесса, вы можете напрямую подключиться к xargs. Изменить: если у вас должно быть слово, например null (вдохновленное @Serg) в случае сбоя поиска, вы можете используйте следующую команду:
$ cat ip-addresses.txt | xargs -I % bash -c '{ query=$(dig -x % +short); if [ -z $query ]; then query=null;fi; echo %:$query; }'
cat ip-addresses.txt # Распечатайте IP-адреса до STDOUT. Если вы не хотите cat из файла, вы можете напрямую подключиться к другому процессу, например command | xargs ... xargs -I % bash -c # Возьмите каждую строку слева от канала, используйте % в качестве заполнителя, запустите команду bash, которая следует в одинарных кавычках dig IP-адрес, который исходит от заполнителя % на xargs, присваивает переменной query. Если результатом является null (нулевая длина), присвойте строке «null» слово переменной query, затем напечатайте как IP:result Демонстрация:
$ cat ip-addresses.txt | xargs -I % bash -c '{ query=$(dig -x % +short); if [ -z $query ]; then query=null;fi; echo %:$query; }'
1.2.3.4:null
1.1.1.1:null
222.222.222.222:null
23.12.34.56:a23-12-34-56.deploy.static.akamaitechnologies.com.
8.8.8.8:google-public-dns-a.google.com.
208.67.222.220:resolver3.opendns.com.
Вдохновленный примером оболочки, показанным в другом ответе, я решил, что версия Perl мне подходит лучше, поэтому я создал этот файл «batch_dns_by_ip.pl». Вы поместите список IP-адресов в текстовый файл, который будет транслироваться в программу.
Код должен выглядеть так, и вы захотите сделать исполняемый файл:
#!/usr/bin/perl
use strict;
my @domains;
my $address;
while (<>)
{
chomp;
$address = $_;
$address =~ s/ *//g;
@domains = ();
@domains=`dig -x "$address" +short`;
chomp(@domains);
if ("$domains[0]" eq "")
{
$domains[0] = "NULL";
}
printf("addr: %15s names: %s", $address, $domains[0]);
if ("$domains[1]" eq "")
{
print "\n";
}
else
{
printf(", %s\n", $domains[1]);
}
}
Запуск может выглядеть так:
$ cat myips | ./batch_dns_by_ip.pl
addr: 216.58.219.238 names: lga25s41-in-f14.1e100.net., lga25s41-in-f238.1e100.net.
addr: 151.101.129.69 names: NULL
addr: 8.8.8.8 names: google-public-dns-a.google.com.
addr: 10.49.11.62 names: nyalbdnsvip01.miscny.nyenet., nyalbcwgbvip01-vlan401.miscny.nyenet.
addr: 69.172.201.153 names: NULL
Надеюсь, что это поможет!
Вы можете просто
nmap -R -sL -Pn 1.2.3.0/24 | grep '('
-n/-R Никогда не выполнять DNS-разрешение / Всегда разрешать [по умолчанию: иногда] -sL List Scan - просто указать цели для сканирования -Pn Обработать все хосты как онлайн - пропустить хост-открытие. Удалите это, чтобы получить ответ на ping. grep оставляют только разрешенные обратные DNS и некоторые полезные строки.
Добавьте --dns-servers x.x.x.x, чтобы использовать определенный DNS-сервер.