Robot ASK

Zamiana tekstu za pomocą skryptu Powershell

Witam

Co jakiś czas się zdarza, że trzeba w kilku plikach tekstowych zamienić pewną wartość.

Np. gdy mamy uruchomiony load balancer na serwerze Apacha to po podmianie jakiegoś fragmentu strony musimy to zrobić w kilku innych miejscach.

Dla przykładu mamy stronę WWW, której treść zawiera hiperłącze do witryny http://www.askomputer.pl

 

 

Ruszyły zapisy na darmowy webinar "NMAP - Skanowanie Urządzeń i Portów W Sieci"!

Webinar odbędzie się 8 marca o godzinie 13:00!

Na spotkaniu zostaną omówione między innymi:

  • Wprowadzenie do NMAP: Omówienie podstawowych pojęć związanych z NMAP. Przegląd funkcji i możliwości narzędzia.
  • Podstawy Skanowania: Rozpoznawanie dostępnych trybów skanowania. Wybór odpowiednich opcji w zależności od celu skanowania.
  • Rozpoznawanie Usług: Skanowanie portów i identyfikacja usług działających na poszczególnych portach. Analiza wyników skanowania i interpretacja informacji.

Chcesz wziąć udział w webinarze? Kliknij w link: https://asdevops.pl/s36/

 

 

 

 

 

Strona ta jest rozsiana na trzech serwerach:

– Server1

– Server2

– Server3

w lokalizacji:

C:\strona.html

Aby zmienić zawartość wyświetlania naszej strony, musimy na każdym serwerze edytować plik strona.html

W kolejnych krokach skonstruujemy skrypt, który zamieni nam link http://www.askomputer.pl na https://www.blog.askomputer.pl we wszystkich trzech plikach.

Zamiana tekstu

Na początek tworzymy prosty skrypt do podmiany tekstu w pliku za pomocą Powershell. Skrypt prezentuje się następująco:

(Get-Content „\\server1\c$\strona.html”) |

Foreach-Object {$_ -replace “http://www.askomputer.pl”, “https://www.blog.askomputer.pl”} |

Set-Content „\\server1\c$\strona.html „

Polecenie:

(Get-Content „\\server1\c$\strona.html”) |

pobiera zawartość naszego pliku.

Linia:

Foreach-Object {$_ -replace “http://www.askomputer.pl”, “https://www.blog.askomputer.pl”} |

wskazuje co należy zamienić. Najpierw podajemy starą wartość, a następnie, po przecinku wartość, którą chcemy wprowadzić.

Polecenie:

Set-Content „\\server1\c$\strona.html „

zapisuje nasze zmiany.

Zamiana tekstu na wszystkich trzech plikach

Oczywiście, żeby zamienić wartość we wszystkich trzech plikach wystarczy skopiować nasz kod i zamienić w linii 1 i 3 lokalizację kolejnych, dwóch plików. Analogicznie, chodzi tu o zamianę server1 na server2 oraz server3.  Będzie to wyglądało w ten sposób:

(Get-Content „\\server1\c$\strona.html”) |

Foreach-Object {$_ -replace “http://www.askomputer.pl”, “https://www.blog.askomputer.pl”} |

Set-Content „\\server1\c$\strona.html „

(Get-Content „\\server2\c$\strona.html”) |

Foreach-Object {$_ -replace “http://www.askomputer.pl”, “https://www.blog.askomputer.pl”} |

Set-Content „\\server2\c$\strona.html „

(Get-Content „\\server3\c$\strona.html”) |

Foreach-Object {$_ -replace “http://www.askomputer.pl”, “https://www.blog.askomputer.pl”} |

Set-Content „\\server3\c$\strona.html „

Dodanie zmiennych

Powyższy kod nie wygląda jednak zbyt ładnie. W dodatku, jeżeli często dokonujemy podobnej zmiany to wartość, którą zmieniamy musimy do naszego skryptu wklepać aż 6 razy!

Najpierw 3 razy http://www.askomputer.pl, a później 3 razy https://www.blog.askomputer.pl

Jeżeli zmiany dokonujemy w większej ilości plików to analogicznie, musimy wykonać więcej zmian w samym skrypcie. Nie po to sobie upraszczamy robotę żeby komplikować, więc wrzucimy do naszego kodu zmienną.

Utworzymy dwie zmienne na samym początku skryptu. Jedna będzie oznaczała stary link, który chcemy wyrzucić, a druga będzie przypisana do nowego linku.

Zmienne w Powershellu definiujemy poprzez znak $

Wrzucamy na samym początku skryptu dwie zmienne:

$Starylink = „http://www.askomputer.pl”

$Nowylink = „https://www.blog.askomputer.pl”

Natomiast, w dalszej części skryptu zamieniamy http://www.askomputer.pl” na $Starylink, a https://www.blog.askomputer.pl na $Nowylink

Ostateczny skrypt prezentuje się następująco:

$Starylink = „http://www.askomputer.pl”

$Nowylink = „https://www.blog.askomputer.pl”

(Get-Content „\\server1\c$\strona.html”) |

Foreach-Object {$_ -replace $Starylink , $Nowylink } |

Set-Content „\\server1\c$\strona.html „

(Get-Content „\\server2\c$\strona.html”) |

Foreach-Object {$_ -replace $Starylink , $Nowylink } |

Set-Content „\\server2\c$\strona.html „

(Get-Content „\\server3\c$\strona.html”) |

Foreach-Object {$_ -replace $Starylink , $Nowylink } |

Set-Content „\\server3\c$\strona.html „

Kolejnym razem gdy będziemy zmieniać jakieś wartości w pliku strona.html, wystarczy, że zmienimy parametry zmiennych $Nowylink i $Starylink.

Analogicznie, podobnych zmian możemy dokonywać również w plikach z innymi typami rozszerzeń. Na przykład ze standardowym plikiem .txt.

 

 

 

Ruszyły zapisy na darmowy webinar "NMAP - Skanowanie Urządzeń i Portów W Sieci"!

Webinar odbędzie się 8 marca o godzinie 13:00!

Na spotkaniu zostaną omówione między innymi:

  • Wprowadzenie do NMAP: Omówienie podstawowych pojęć związanych z NMAP. Przegląd funkcji i możliwości narzędzia.
  • Podstawy Skanowania: Rozpoznawanie dostępnych trybów skanowania. Wybór odpowiednich opcji w zależności od celu skanowania.
  • Rozpoznawanie Usług: Skanowanie portów i identyfikacja usług działających na poszczególnych portach. Analiza wyników skanowania i interpretacja informacji.

Chcesz wziąć udział w webinarze? Kliknij w link: https://asdevops.pl/s36/

 
 

Darmowy Webinar - "NMAP - Skanowanie Urządzeń i Portów w Sieci"

X