職堎でプリンタヌをむンストヌルするためのシステムの䜜成方法

画像



芪愛なるナヌザヌこんにちは。 今日は、ナヌザヌが自分で必芁なプリンタヌをむンストヌルできるようにするためのナヌザヌシステムの䜜成方法に぀いお説明したす。 私が働いおいる堎所に぀いお少しお話したす。 事前に、ブラりザヌからプリンタヌをむンストヌルできるWindows Server 2012 R2の圹割コンポヌネントに぀いお知っおいたず蚀いたす。 しかし、私は自分の自転車を発明したかったので、ここでの制限はおそらく想像䞊のものでしょう。 猫の䞋でおもしろくなりたした。 蟛抱匷くない人のために、スクリヌンショットは蚘事の最埌にありたす。



仕事に぀いお少し



私は、倚くの支瀟を持぀倧芏暡な組織のヘルプデスクで働いおいたす。 コンピュヌタヌの前で働く1,000人以䞊の埓業員がいたす。 ネットワヌクプリンタヌの倧きな動物園があり、プリンタヌの操䜜を担圓する個々の埓業員がいるず掚枬できたす。 コンピュヌタヌ甚のプリンタヌをむンストヌルしたす-ヘルプデスク。 非垞に倚くの堎合、さたざたな郚門の埓業員は、ある職堎から別の職堎に移動したり、出勀したり、職䜍や職業を倉曎したりしたす。 たくさんの興味深いもの。 したがっお、このため、非垞に倚くの堎合、ヘルプデスクに電話をかけお、プリンタヌをむンストヌルするように䟝頌したす。 プリンタヌのIPアドレスを蚀うようにナヌザヌに芁求するこずは、サルにスヌプを調理するように芁求するこずに䌌おいたす。 察話の䟋を挙げたす実際のケヌス



U-ナヌザヌ、I-I
U-こんにちは、私はそこに着いたこのヘルプデスク

I-はい。 そうだね。 あなたはそこに着いた

U-コンピュヌタヌにプリンタヌをむンストヌルしおください

ええず、お䜿いのコンピュヌタヌの名前を教えおください。

コンピュヌタヌcomp-01のU名架空名

私はどのプリンタヌを眮きたすか コンピュヌタヌぞの接続

U- HP LaserJet 600、placeにありたす

I-プリンタヌの堎所から䜕も埗られたせん最初のプリンタヌが劣化したか、堎所が倉わるず、真実は別のプリンタヌで倉曎されたす。 わかりたした、このプリンタヌのIPアドレスを教えおもらえたすか

U- ....

受話噚の最埌で䞀時停止したす。 ナヌザヌの脳がどのように動いお、耳から血が出お、぀いに尋ねたのか聞いた

U-すみたせん ゚むミヌ 䜕お蚀うの ゚むミヌアドレス

私はIP、IPアドレスです。

U- IP なに どうやっお圌を芋るこずができたすか

I-わかりたした、あなたに加えお、他の誰かがこのプリンタヌを䜿甚しおいたすか

ええず、another_userを䜿甚したす

I-圌にコンピュヌタ名を尋ねお、蚱可を埗お、私が圌に少し接続するようにしおください

U- OK、今そしお圌がコンピュヌタヌの名前ず接続の蚱可をother_userに尋ねるずくぐもった声が聞こえたす

I- ... ..自分自身のこずを考えお目的目的目的、クリスマスツリヌはaymの韻が思い぀くものを固執する

ナヌ゚ヌル

私-はい、あなたの話を聞いおいたす

U-コンピュヌタヌ名comp-02、接続可胜

I-another_userに、圌が垞に䜿甚しおいるプリンタヌを衚瀺するように䟝頌したすコンピュヌタヌに接続したす

U- OK、今たたもやの声.......-これ

I- OK、たあ、私はあなたを回線に入れないこずをすべお理解しおいたす。私はすべおを自分で眮き、セットアップしたす

U-いいですね、ありがずう。 しかし、あなたはaymiが䜕であるかを私に蚀わなかった。

I-おそらくIPを意味したす。 さお、呌び出しが倚すぎるため、今説明するのは難しいでしょうが、䞀般的にこれはネットワヌク䞊のデバむスのアドレスです。

人文科孊で脳がどのように壊れるか聞いたこずがありたすか 私はこの音を聞いた、あなたは「氎」だけを含む倧量の情報のはねでそのような鈍い音を知っおいる。

U-....長いポヌズ...なるほど。 私は仕事に出かけたす、そしおあなたはプリンタヌを眮きたす

I-はい、さようなら、さようなら



ここで、ヘルプデスクの3人に1人が、同じ状態でプリンタヌをむンストヌルするように求めおいるず想像しおください。 になる方法 この皮のダむアログは非垞に面倒であり、プリンタのIPを芋るためにデバむスの構成を印刷する方法をナヌザヌに説明するのは非垞に面倒です。 そのため、䜕らかの自動化が必芁です。 しかし、すべおのプリンタヌを1぀の別個のプリンタヌサヌバヌに集䞭的に収集する堎合は、䜿いやすいむンタヌフェむスを備えたシンプルなWebサむトを䜜成しおください。 数回クリックするず、プリンタヌがむンストヌルされたす。 呌び出しは受け入れられたす。



すべおが芋た目ほど難しくない



システム管理者にWindows Server 2012 R2に別のサヌバヌを割り圓おるように䟝頌したした。



プリンタサヌバヌぞ





プリンタヌの堎合





プログラミングを開始



Webサむトは、メモ垳++゚ディタヌ、Google、ブラりザヌのみを䜿甚しお、自己蚘述MVC゚ンゞンを蚘述しおPHP䞊に構築されたすはい-ハヌドコアのみ。 私はフレヌムワヌクの知識がなく、怠inessを研究し、2k17でjavascriptフレヌムワヌクを䜿甚したすかたた、プリンタヌには倚すぎたすか



このシステムから必芁な目暙を蚭定したす。





プロゞェクトの構造を定矩したす。





ルヌトフォルダヌで、index.phpファむルを䜜成し、コヌドを远加したす。



<?php //  session_start(); //   spl_autoload_register(function ($class){ include './app/controllers/' . $class . '.php'; }); //  .        $controller = new Controller($_GET, $_POST); ?>
      
      





configsフォルダヌで、database.phpファむルを䜜成したす。



 <?php define("HOST", "localhost"); define("USER", "root"); define("PASSWORD", "OUR_PASSWORD"); define("DATABASE", "printer"); ?>
      
      





phpmyadminでブラりザヌに移動し、utf8_general_ci゚ンコヌドを䜿甚しおプリンタヌデヌタベヌスを䜜成したす。 ブランチ、プリンタヌ、ナヌザヌずいう名前の3぀のテヌブルを䜜成したす。



ブランチの構造

名 皮類 オプショナル
Id int6 AUTO_INCREMENT、PRIMARY、UNIQUE
branch_name varchar255
画像 varchar255


プリンタヌ構造

名 皮類 オプショナル
Id int6 AUTO_INCREMENT、PRIMARY、UNIQUE
お名前 varchar255
枝分かれ int6 デフォルト倀1
説明 テキスト
ipaddress varchar255
画像 varchar255
File1 varchar255
File2 varchar255
File3 varchar255


ナヌザヌ構造

名 皮類 オプショナル
Id int6 AUTO_INCREMENT、PRIMARY、UNIQUE
ログむン varchar128
トヌクン varchar128
パスワヌド varchar128
lang varchar10
ログむン日 varchar255


衚からわかるように、branchidはid倀を取埗するこずによりプリンタヌが属するブランチを決定したす。



idが1、ブランチ名が「none」、倀が「none」の画像を䜿甚しお゚ントリを䜜成したす。 この゚ントリは、プリンタをアンむンストヌルされたブランチに蚭定するために必芁です。 最初の゚ントリはハヌドコヌディングされおおり、juzverejsや管理パネルのようにブランチのリストには衚瀺されたせん。 削陀できたせん。



むンタヌネットで芋぀けたDatabaseクラス。 configsフォルダヌにあるdatabase.phpファむルから接続するための倀を䜿甚しお、デヌタベヌスに接続する機胜ず、デヌタベヌスにク゚リを実行する機胜がありたす。



Ä°nfoクラスは 、デヌタベヌスからデヌタを取埗、倉曎、削陀するために䜿甚されたす。 このクラスを䜿甚しお、システム内のすべおの操䜜が実行されたす。



1぀の重芁なクラスはController.phpクラスです。 名前が瀺すように、このクラスはindex.phpから__construct$ get、$ postでGETおよびPOSTリク゚ストを受け入れるコントロヌラヌです。 特定のリク゚ストを受け取った埌、圌は目的のリク゚ストに応じおペヌゞの断片を単䞀に収集し、 Info.phpから必芁な機胜を実行したす。



Viewsクラスは、ペヌゞの䞀郚をロヌドするクラスです。 各ペヌゞには、Viewsフォルダヌ内のphpファむルに察応する独自の名前がありたす。 たずえば、メむンペヌゞを衚瀺するには、次のように蚘述する必芁がありたす。



 $views = new Views; $views->addView('header', 'header.php'); $views->addView('menu', 'menu.php'); $views->addView('dashboard', 'dashboard.php'); $views->addView('footer', 'footer.php');
      
      





同じクラスで、珟圚のナヌザヌ蚀語が決定され、ロヌカリれヌションがiniファむルからロヌドされ、ペヌゞのたさにその郚分で既に䜿甚されおいる$ lang倉数が䜜成されたす。 メむンペヌゞ dashboard.php のサンプルコヌド



 <div class="dashboard"> <div class="container"> <h1><?php echo $lang['DASHBOARD_HEADER']; ?></h1> <p><?php echo $lang['DASHBOARD_TEXT']; ?></p> <br> <br> <p><a class="btn btn-primary btn-lg" href="index.php?branches" role="button"><?php echo $lang['DASHBOARD_INSTALL']; ?> »</a></p> <img class="dashboard-img" src="app/views/img/printer_icon.png"> </div> </div>
      
      





viewsフォルダヌには、css、javascriptファむルもありたす。 BootstrapをCSSスタむルの基瀎ずしお䜿甚したした。



Langクラスは、ナヌザヌの珟圚の蚀語を定矩したす。 最初に、圌はクッキヌ「cookie_lang」を取埗しようずしたす。 怜出されない堎合は、デフォルトの蚀語をロシア語に蚭定したす。 getLangArray関数は、目的のiniファむルをロヌドし、「キヌ」->「倀」ずいう圢匏の配列を返したす。 この関数は、ビュヌクラスで䜿甚されたす。



私たちが埗たもの



ナヌザヌはメむンペヌゞに移動したす。 圌がどこに着いたかずいう説明ず、すべおのブランチのリストを開くボタンがありたす。 ナヌザヌがブランチを遞択するず、プリンタヌのリストが開きたす。 プリンタヌはグリッドに衚瀺され、写真ず名前が衚瀺されたす。 ナヌザヌがプリンタヌを遞択するず、遞択されたプリンタヌのペヌゞが開き、倧きな「むンストヌル」ボタンがありたすプリンタヌに関する情報、そのİPアドレスもありたす。 このボタンをクリックするず、batファむルがダりンロヌドされ、プリンタヌサヌバヌのscripts $フォルダヌで共有されおいるvbsスクリプトが開きたす。 問題は、vbsファむルをダりンロヌドするず、ダりンロヌドする代わりに、ブラりザがこのファむルを新しいタブで開くこずです。 したがっお、私はずおも倒錯しなければなりたせんでした。 ボヌルフォルダヌのVbsファむルも、バットファむルず共にフォルダヌに゜ヌトされたす。 たずえば、フォルダ構造は次のずおりです。



プリンタヌid



#idはプリンタのシリアル番号です。



管理パネルから新しいプリンタヌを远加するず、必須フィヌルドに入力され、目的のバットファむルがボヌルから遞択されたす。 セットアップファむル、プリンタヌの写真がアップロヌドフォルダヌにアップロヌドされたす。 管理パネルにより、最倧3぀の異なるむンストヌルファむルをアップロヌドできたす。 ダりンロヌドされるファむルの数ず「むンストヌル」ボタン。 この堎合、プリンタをむンストヌルする代替方法はありたせんでした。 VBSスクリプトで十分であるこずが刀明したした。



VBSスクリプト



プリンタヌをむンストヌルするVbsスクリプトは次のようになりたした。



 printerName = "\\prnserver01\HP LaserJet 600 printer1 branch1" Set WshNetwork = CreateObject("WScript.Network") WshNetwork.AddWindowsPrinterConnection printerName WSHNetwork.SetDefaultPrinter printerName
      
      





このスクリプトは非衚瀺モヌドで実行され、しばらくの間コマンドりィンドりが衚瀺され、その埌消えたす。 このスクリプトには、䜕が起こっおいるのか明確でないもののマむナスがありたす。 したがっお、少し考えお、次の圢匏でそれを倉曎したした。



 '   printerName = "\\prnserver01\HP LaserJet 600 printer1" '  Internet Explorer Set objExplorer = CreateObject("InternetExplorer.Application") '   - , ,    objExplorer.Navigate "about:blank" objExplorer.ToolBar = 0 objExplorer.StatusBar = 0 objExplorer.Left = 500 objExplorer.Top = 250 objExplorer.Width = 550 objExplorer.Height = 170 objExplorer.Visible = 1 '  objExplorer.Document.Title = "Ustanovka printera" ' html  ,     objExplorer.Document.Body.InnerHTML = "<table style=""width:100%""><tr><td id=""progress"" style=""font-family:Segoe UI;text-align: center;font-size:48px;border-bottom:1px solid black;""> Ustanovka printera: 0%</td></tr><tr><td style=""font-family:Segoe UI;text-align: center;font-size:22px;"">" & printerName & "</td></tr></table>" ' 500 ,      id progress    .    ,    0 Wscript.Sleep 500 objExplorer.document.getElementById("progress").innerText = " Ustanovka printera: 10%" '    ,       .            Set WshNetwork = CreateObject("WScript.Network") WshNetwork.AddWindowsPrinterConnection printerName WSHNetwork.SetDefaultPrinter printerName '   200 ,        Wscript.Sleep 200 objExplorer.document.getElementById("progress").innerText = " Ustanovka printera: 20%" '     200  Wscript.Sleep 200 objExplorer.document.getElementById("progress").innerText = " Ustanovka printera: 40%" ' ,         Wscript.Sleep 200 objExplorer.document.getElementById("progress").innerText = " Ustanovka printera: 60%" '      Wscript.Sleep 200 objExplorer.document.getElementById("progress").innerText = " Ustanovka printera: 80%" '  , ! Wscript.Sleep 100 objExplorer.document.getElementById("progress").innerText = " Printer ustanovlen!" '  3     ,      Wscript.Sleep 3000 objExplorer.Quit
      
      





スクリヌンショット



スクリヌンショット
画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



画像



このすべおの゜ヌスコヌドはgithubに投皿されおいたす



珟圚、プリンタのむンストヌルの芁求ははるかに少なくなっおいたす。

ご枅聎ありがずうございたした



All Articles