Home  >  Article  >  Backend Development  >  A PHP script that changes hosts

A PHP script that changes hosts

WBOY
WBOYOriginal
2016-07-25 08:43:28928browse
  1. define('HOST_FILE', 'C:WindowsSystem32driversetchosts');
  2. $hm = new HostManage(HOST_FILE);
  3. $env = $argv[1];
  4. if (empty( $env)) {
  5. $hm->delAllGroup();
  6. } else {
  7. $hm->addGroup($env);
  8. }
  9. class HostManage {
  10. // hosts file path
  11. protected $file;
  12. // hosts record array
  13. protected $hosts = array();
  14. // Configuration file path, default is __FILE__ . '.ini';
  15. protected $configFile;
  16. // Configuration array read from ini configuration file
  17. protected $config = array();
  18. // The domain name that needs to be configured in the configuration file
  19. protected $domain = array();
  20. // The IP data obtained by the configuration file
  21. protected $ip = array();
  22. public function __construct($file, $config_file = null) {
  23. $this->file = $file;
  24. if ($config_file) {
  25. $this->configFile = $config_file;
  26. } else {
  27. $this-> configFile = __FILE__ . '.ini';
  28. }
  29. $this->initHosts()
  30. ->initCfg();
  31. }
  32. public function __destruct() {
  33. $this->write();
  34. }
  35. public function initHosts() {
  36. $lines = file($this->file);
  37. foreach ($lines as $line) {
  38. $line = trim($line);
  39. if (empty($line) || $line[0] == '#') {
  40. continue;
  41. }
  42. $item = preg_split('/s+/', $line);
  43. $this->hosts[$item[1]] = $item[0];
  44. }
  45. return $this;
  46. }
  47. public function initCfg() {
  48. if (! file_exists($this->configFile)) {
  49. $this->config = array();
  50. } else {
  51. $this->config = (parse_ini_file($this->configFile, true));
  52. }
  53. $this->domain = array_keys($this->config['domain']) ;
  54. $this->ip = $this->config['ip'];
  55. return $this;
  56. }
  57. /**
  58. * Delete the hosts of the domain in the configuration file
  59. */
  60. public function delAllGroup() {
  61. foreach ($this ->domain as $domain) {
  62. $this->delRecord($domain);
  63. }
  64. }
  65. /**
  66. * Configure the domain to the specified ip
  67. * @param type $env
  68. * @return HostManage
  69. */
  70. public function addGroup($env) {
  71. if (! isset( $this->ip[$env])) {
  72. return $this;
  73. }
  74. foreach ($this->domain as $domain) {
  75. $this->addRecord($domain, $this-> ip[$env]);
  76. }
  77. return $this;
  78. }
  79. /**
  80. * Add a host record
  81. * @param type $ip
  82. * @param type $domain
  83. */
  84. function addRecord($domain, $ip) {
  85. $this->hosts[$domain] = $ ip;
  86. return $this;
  87. }
  88. /**
  89. * Delete a host record
  90. * @param type $domain
  91. */
  92. function delRecord($domain) {
  93. unset($this->hosts[$domain]);
  94. return $this;
  95. }
  96. /**
  97. * Write to host file
  98. */
  99. public function write() {
  100. $str = '';
  101. foreach ($this->hosts as $domain => $ip) {
  102. $str .= $ip . "t" . $domain . PHP_EOL;
  103. }
  104. file_put_contents($this->file, $str);
  105. return $this;
  106. }
  107. }
Copy code

Usage:
  1. php hosts.php local # The domain name will point to the local machine 127.0.0.1
  2. php hosts.php dev # The domain name will point to the development machine 192.168.1.100
  3. php hosts.php # Delete the hosts configuration of the domain name
Copy code

hosts, PHP


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn