2016-02-09 2 views
0

У меня есть файлы javascript, которые используют IP-адрес, который изменяется при его перемещении. Я решил, что могу написать скрипт, который анализирует мои многочисленные файлы javascript и заменяет строку токена, такую ​​как %IP_ADDRESS%, с результатом, полученным от ifconfig. Полученный файл-буфер сохраняется в качестве используемых сценариев для моего сайта.Создать скрипт для вывода измененного javascript

Есть ли более простой способ достичь этого? Если нет, то какие команды bash помогут мне сканировать файлы, заменять токены и сохранять в новый файл?

Благодаря

+0

Вы могли бы рассмотреть возможность один мастер-файл, который содержит такие вещи, как IP-адрес (или любой другой). Загрузите эти значения «на лету». Имейте конкретный файл для каждого сервера, на котором он работает. – durbnpoisn

+0

@durbnpoisn, как вы это делаете в javascript – Maverick

+0

Я отправлю ответ, чтобы показать ... – durbnpoisn

ответ

0

я бросил это вместе, как на самом деле быстрой демонстрации.

Click here to view result

Вот код страницы HTML. Вы можете просмотреть результат сверху.

<!DOCTYPE html> 
<html> 
<script type="text/javascript" src="http://dpoisn.com/demos/vars.js"></script> 
<head> 
<title>DPoisn.com - demo Page</title> 
</head 
<body> 

    <div id="demo">blank for now</div> 

    <script type="text/JavaScript" language="JavaScript"> 
     messageIs = "ipIs: " + ipIs + "<br />hostIs: " + hostIs; 
     document.getElementById("demo").innerHTML = messageIs 

    </script> 

<p>source for vars.js:</p> 

<pre><code> 
var ipIs = '198.168.1.1' 
var hostIs = 'http://dpoisn.com' 
</code></pre> 

</body> 
</html> 

Все это делает втягивание файла .js, который содержит нужные переменные. Пока этот импорт выполняется до всего остального на странице, вы можете использовать все, что находится внутри него. В этом случае задайте пару строк.

Идея состоит в том, что у вас может быть «vars.js», который уникален для каждого сервера, на котором вы его запускаете. И вы можете использовать переменные, не изменяя код на сайте снова.

+0

Некоторые javascripts не встроены в html – Maverick

+0

Не имеет значения, где находятся Javascripts. Они могут быть встроены или внешними. Дело здесь в том, чтобы использовать одно центральное пятно для хранения всех переменных среды. Однако вы идете об их использовании зависит от вас. – durbnpoisn

0

, что Баш команды поможет мне сканировать файлы, заменить жетоны и сохранить в новом файле?

Вы можете заменить маркер в каждом файл, используя sed с командой Баша:

sed -i 's/%IP_ADDRESS%/127.0.0.1/g' *.js 

Это сделает замену в-место (-i флага) на всех .js файлов в текущем каталоге.

Если вы хотите создать новый файл, а не изменять старый, вы можете использовать следующую команду:

sed 's/%IP_ADDRESS%/127.0.0.1/g' input.js > output.js 

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

Хорошей альтернативой может быть изменение кода Javascript, чтобы он загружал IP-адрес по мере необходимости, вместо того, чтобы содержать его жестко закодированным.

+0

OP попросил заменить строку результатом, полученным из ifconfig. –

1

Использование sed. Если вы получаете IP-адрес в переменную $ip, вы можете сделать:

sed "s/%IP_ADDRESS%/$ip/g" template.js > script.js 
+0

Спасибо, это то, что я хотел знать – Maverick

0

Поместите этот скрипт bash в тот же каталог со всеми js-файлами.

#!/bin/bash 
#Remark: $ip should contain your IP address, adjust cut and awk according to your OS. 
ip=$(ifconfig eth1 | grep -i bcast | cut -d : -f2 | awk '{ print $1 }') 
sed -i "s|%IP_ADDRESS%|$ip|g" *.js 

Script отлично работает в Redhat 6.

Смежные вопросы