Makine ana makine adı ile alınıyor systemd.
Bu kılavuzun yanı sıra resmi man sayfalarına da systemdbakarken çok aşina olmama rağmen , aradığınız şey “belirleyici” bir değer:systemd
Birçok ayar, birim dosyaları yüklendiğinde değiştirilen çalışma zamanı veya birim parametrelerine atıfta bulunan genel birim dosyalarını yazmak için kullanılabilecek özellikleri giderir.
Ve burada çalışacağına inandığım belirli belirleyici %H, “Ana bilgisayar adı” için olan ve şöyle tanımlanır:
Çalışan sistemin ana makine adı, birim yapılandırmasının yüklendiği zamandaki noktada.
Bu yüzden, örnek systemdbetiğinizi kontrol ederek, [Service]öbeğinizi şu şekilde değiştirin :
[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/usr/bin/ruby /home/redmine/redmine/bin/rails server webrick -e production -b %H -p 3000
ip=()Atama ile satırın gittiğini ve ExecStartkomutun %Hbunun yerine artık kullandığını unutmayın $ip.
IP adresi almak için bir fikir systemd.
Bununla birlikte, systemdsadece %H“ şartname ” üzerinden bir ana bilgisayar adı sağladığı görülüyor . Bana sorarsanız garip. Dolayısıyla derin bir deneyime sahip systemdolmasam da, bu yazının amacına ulaşmak için neler yapılabileceğini anladığımı düşünüyorum.
Anahtar, okumak için bir kurulum EnvironmentFileyapmak systemdolacaktır. Bu sitede nasıl kullanılacağı hakkında daha EnvironmentFilefazla bilgi edinin .
Diyelim ki böyle basit bir Bash betiği yarattınız; adlandıralım write_ip_to_file.shve ip=$()kurulumunuzda işe yarayanla eşleşmesi için IP adresini alma mantığını değiştirmekten çekinmeyin :
#!/bin/bash
ip=$(/sbin/ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}');
echo IP=$ip > ~/ip.txt;
Tek yapması gereken, IP adresinizi giriş dizininizdeki eth0bir metin dosyasına vermektir ip.txt. Format böyle bir şey olurdu:
IP=123.456.789.0
Anladım? İyi. Şimdi systemdbetiğinde, [Service]öbürünü böyle bir şey olacak şekilde değiştir ; kaydedildiği [your username]dizinin kullanıcı adıyla eşleşecek şekilde ayarlamayı unutmayın ip.txt:
[Service]
Type=simple
User=redmine
Group=redmine
EnvironmentFile=/home/[your username]/ip.txt
ExecStart=/usr/bin/ruby /home/redmine/redmine/bin/rails server webrick -e production -b $IP -p 3000
Ve bunun yapması gereken, config dosyasını yüklemek ip.txtve $IPdeğerini vermektir 123.456.789.0. Aradığın şeyin bu olduğuna inanıyorum.
Buradaki kilit faktör write_ip_to_file.sh, açılışta veya belki de systemdbetiğin kendisi tarafından çalıştırılmaktır .
IP adresi almak için başka bir fikir systemd.
Ancak bununla birlikte, daha iyi bir fikrim var (eğer işe yararsa): Tüm ExecStartkomutu, adı verilen Bash dosyasına taşıyın redmine_start.shve sistemin onu okuyabildiğinden ve çalıştırabildiğinden emin olun. İçeriği redmine_start.shşöyle olacaktır; IP adresi alma mantığını, ip=$()kurulumunuzdakilerle eşleşecek şekilde eşleştirmekten çekinmeyin :
#!/bin/bash
ip=$(/sbin/ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}');
/usr/bin/ruby /home/redmine/redmine/bin/rails server webrick -e production -b $IP -p 3000
Ve sonra [Service]yığınını böyle bir şey olacak şekilde değiştir ; kaydedildiği [your username]dizinin kullanıcı adıyla eşleşecek şekilde ayarlamayı unutmayın redmine_start.sh:
[Service]
Type=simple
User=redmine
Group=redmine
ExecStart=/home/[your username]/redmine_start.sh
Eğer mantığı izlerseniz, mantığının tamamı ExecStartiçeriyorsa redmine_start.sh, IP adresini almak için bu Bash numarasını kullanabilirsiniz, onu bir değişkene atayın ve sonra Redmine'yi orada başlatın. systemdO nasıl başlayacağınızı zaman / script sadece yönetmek olacaktır.
Makinenin IP adresini alınıyor init.d.
Ve init.dkullanıcıların referansı için Ubuntu kullanıyorum ve mevcut bir çalışma sistemi IP adresini bir Bash ya da init.dbaşlangıç komut dosyasında almam gerektiğinde şöyle bir şey çalıştırıyorum:
ip=$(/sbin/ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}')
Tabii ki , sisteminizin /sbin/ifconfigkonumunu eşleştirmeniz ifconfigve ardından eth0IP adresini almak istediğiniz ağ arabirimiyle eşleştirmeniz için değiştirmeniz gerekir.
Ancak kurulumunuz ve gereksinimlerinize uyacak şekilde ayarlandıktan sonra, bu, bir arayüzün IP adresini başarıyla alır ve ipdaha sonra $ipbetiğinizdeki gibi erişilebilen değişkene atar .