Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Entsorgung von Hardware

    Scheduled Pinned Locked Moved Betrieb
    21 Posts 3 Posters 3.0k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • creissC Offline
      creiss i-doit Kenner
      last edited by

      Hallo Thomas,

      nein, das ist aus dem Objekt heraus nicht möglich. Wenn du viele Objekte archivieren willst, geht das noch über die Massenänderung. Aber der funktionierende Weg ist doch viel effizienter als das, was du dir wünscht oder nicht?

      Der Weg, der schon geht

      1. In Liste springen und Objekt aussuchen
      2. Objekt anhaken
      3. Archivieren

      Der hypothetische Weg über das Objekt, der nicht geht

      1. In Liste springen und Objekt aussuchen
      2. Objekt öffnen
      3. Objekt editieren
      4. Zustand öffnen
      5. "Archiviert" auswählen
      6. Speichern

      Der Weg, den du gerne hättest, ist doch viel Klick-intensiver oder verstehe ich deine Frage falsch?

      Lieben Gruß
      Christian

      NEU - i-doit und IT-Dokumentation bei YouTube: https://www.youtube.com/@donamic_de
      Komplett-Strategie: https://i-doit-trainings.de/it-dokumentation-komplett-strategie/
      i-doit Mastery – https://i-doit-trainings.de/i-doit-mastery

      1 Reply Last reply Reply Quote 0
      • T Offline
        ThomasH
        last edited by

        Hallo Christian,

        häufig bekomme ich nur eine Inventarnummer mit der Info, das dieses Gerät entsorgt wurde.

        Also trage ich die Inventarnummer in der Suche oben rechts in i-doit ein. Daraufhin bekomme ich ein Gerät und lande dort in der Detail Seite.
        Nun würde ich dort gern das Gerät "Archivieren".
        Das Gerät erst nochmals in einer Liste zu suchen finde ich viel umständlicher.

        Viele Grüße
        Thomas

        1 Reply Last reply Reply Quote 0
        • creissC Offline
          creiss i-doit Kenner
          last edited by

          Hallo Thomas,

          das stimmt, aus der Richtung wäre das tatsächlich praktisch. Du könntest höchstens erst mal mit dem CMDB-Status arbeiten und das Gerät dann später auf "archiviert" setzen, aber das wären dann auch zwei Schritte.

          Einen anderen Weg kenne ich sonst auch nicht.

          Lieben Gruß
          Christian

          NEU - i-doit und IT-Dokumentation bei YouTube: https://www.youtube.com/@donamic_de
          Komplett-Strategie: https://i-doit-trainings.de/it-dokumentation-komplett-strategie/
          i-doit Mastery – https://i-doit-trainings.de/i-doit-mastery

          1 Reply Last reply Reply Quote 0
          • T Offline
            ThomasH
            last edited by

            Hallo zusammen,

            es ist zwar schon ziemlich lang her, dass dieses Thema hier behandelt wurde, aber es verfolgt mich noch 🙂

            Nun ist mir eine andere Idee gekommen, bin mir aber nicht so ganz sicher, ob es möglich ist, bzw. wie das am einfachsten geht.
            Ist es möglich über die CLI alle Objekte zu Filtern, die den CMDB-Status "verschrottet" haben und diese dann in den Zustand "archiviert" zu setzen?

            So könnte dann regelmäßig ein Cronjob laufen.

            LG
            Thomas

            M 1 Reply Last reply Reply Quote 0
            • M Offline
              middend i-doit Kenner @ThomasH
              last edited by

              Hallo Thomas,

              das kannst Du gut über die CLI machen. Am besten erstellst Du einen Report der alle Objekte mit CMDB Status = verschrottet enthält. Dann kannste den über console.php in deinem Document Root ausführen lassen und weiterverarbeiten.

              Gruss,

              Jörg

              1 Reply Last reply Reply Quote 0
              • T Offline
                ThomasH
                last edited by

                Hallo Jörg,

                in der KB von i-doit habe ich zu reports zur gefunden, das man diese exportieren kann. Wie könnte so ein CLI Befehl aussehen?

                Gruß
                Thomas

                M 1 Reply Last reply Reply Quote 0
                • M Offline
                  middend i-doit Kenner @ThomasH
                  last edited by

                  Hi Thomas,

                  geh mal auf deinen Server in das Dokument Root.
                  Dann guck dir mal folgendes an:

                  /srv/www/htdocs/console.php report-export --help
                  Usage:
                  report-export [options]

                  Options:
                  -r, --reportId=REPORTID ID of the report
                  -d, --exportPath=EXPORTPATH Path to export the report into
                  -f, --exportFilename=EXPORTFILENAME File name of export file, without extension (e.g. .pdf).
                  Default is the title of the report
                  -t, --exportFileType=EXPORTFILETYPE File Type of the export. Possible options: csv, txt, pdf, xml [default: "csv"]
                  -u, --user=USER User
                  -p, --password=PASSWORD Password
                  -i, --tenantId=TENANTID Tenant ID [default: 1]
                  -c, --config=CONFIG Config File
                  -h, --help Display this help message
                  -q, --quiet Do not output any message
                  -V, --version Display this application version
                  --ansi Force ANSI output
                  --no-ansi Disable ANSI output
                  -n, --no-interaction Do not ask any interactive question
                  -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

                  Help:
                  Executes an i-doit report and saves it to a file as CSV, TXT, PDF or XML

                  Damit das klappt musste natürlich vorher einen Report erstellt haben, der dir die verschrotteten Objekte anzeigt. Die Report ID brauchst du dann dann hier...

                  Gruss,

                  Jörg

                  1 Reply Last reply Reply Quote 1
                  • T Offline
                    ThomasH
                    last edited by

                    Hi,

                    dann habe ich den Report exportiert. Leider habe ich keine Idee wie ich dann weiter mache.
                    Reportergebnis bearbeiten und dann importieren oder wie soll das dann gehen?
                    Womit kann man .csv oder .txt bearbeiten (suchen/ersetzen)?

                    Gruß
                    Thomas

                    M 1 Reply Last reply Reply Quote 0
                    • M Offline
                      middend i-doit Kenner @ThomasH
                      last edited by

                      Hi Thomas,

                      ich würde den Report nur dazu nutzen, um festzustellen welche hosts den Status verschrottet haben. Da du diese ja dann archivieren und die Standorte löschen möchtest, würde ich das dann mit dem idoitcli Tool machen.

                      Ist etwas aufwändiger, aber machbar. Man muss für die Objekte in dem Report rausfinden welche IDs die Standorteinträge haben und diese dann per api call löschen. Den APi Call würde ich mit dem idoitcli von Ben Heisig machen (https://github.com/bheisig/i-doit-cli)

                      dann in einer schleife für jeden EIntrag aus dem Report die entsprechenden IDs der Einträge rausfinden:

                      idoitcli -c /etc/idoitcli/config_prod.json call '{"version": "2.0","method": "cmdb.category.read","params": {"objID": 5093027, "category": "C__CATG__LOCATION", "apikey": "xxxxx","language": "en"},"id": 1}'

                      Ergebnis sieht dann so aus (hier nur ein auszug):
                      {
                      "id": 2,
                      "jsonrpc": "2.0",
                      "result": [
                      {
                      "id": "5576",
                      "objID": "5093027",
                      "location_path": "920",
                      "parent": {
                      "id": "920", <<-- das ist die ID die wir brauchen

                      Dann über einen api call den Eintrag für das gewünschte Objekt löschen mit diesem Call (nur ein Beispiel) :

                      {
                      "version": "2.0",
                      "method": "cmdb.category.delete",
                      "params": {
                      "objID": 42,
                      "category": "C__CATG__IP",
                      "cateID": 3,
                      "apikey": "xxx",
                      "language": "en"
                      },
                      "id": 1
                      }

                      Über diesen API Call kann das gerät dann archiviert werden:

                      {
                      "version": "2.0",
                      "method": "cmdb.object.archive",
                      "params": {
                      "object": 464,
                      "apikey": "xxx",
                      "language": "en"
                      },
                      "id": 1
                      }

                      Hier ist noch ein Link zur API Doku:

                      https://kb.i-doit.com/display/en/Methods

                      Unter Kategorien und Attribute in der Verwaltung der API Schnittstelle findest du auch die Namen der Kategorien.

                      Hoffe das hilft 🙂 Muss man halt ein bisschen was programmieren, aber dann sollte es gut funktionieren.

                      Gruss,

                      Jörg

                      1 Reply Last reply Reply Quote 1
                      • T Offline
                        ThomasH
                        last edited by ThomasH

                        Hallo Jörg,

                        inzwischen bin ich durch Deine Holfe schon ein ganzes Stück weiter.
                        Ich habe nun einen Report, der mir alle Objekte auflistet, die als
                        Zustand "Normal" und als CMDB-Status "verschrottet" haben.

                        diesen rufe ich dann über die API auf:

                        curl \
                        --data '
                        {
                            "version": "2.0",
                            "method": "cmdb.reports.read",
                            "params": {
                                "apikey": "xxx",
                                "id": "44",
                                "language": "de"
                            },
                            "id": 1
                        }' \
                        --header "Content-Type: application/json" \
                        https://idoit.domain.de/src/jsonrpc.php
                        

                        Als Result bekomme ich dann

                        {"id":1,
                        "jsonrpc":"2.0",
                        "result":[{"ID":"32559",
                        "CMDB-Status":"LC__CMDB_STATUS__SCRAPPED",
                        "Zustand":"LC__CMDB__RECORD_STATUS__NORMAL",
                        "Bezeichnung":"TEST1"
                        }
                        ]
                        }
                        

                        Manuell bekomme ich das Objekt 32559 auch über die API archiviert:

                        curl \
                        --data '
                        {
                            "version": "2.0",
                            "method": "cmdb.object.archive",
                            "params": {
                                "object": 32559,
                                "apikey": "xxx",
                                "language": "de"
                            },
                            "id": 1
                        }' \
                        --header "Content-Type: application/json" \
                        https://idoit.domain.de/src/jsonrpc.php
                        

                        Result:

                        {"id":1,
                        "jsonrpc":"2.0",
                        "result":{"success":true,
                        "message":"Object 32559 has been archived."
                        }
                        }
                        

                        Soweit so gut, aber nun verstehe ich noch nicht so ganz wie ich es hin bekomme, dass er die Ergebnisse aus dem Report alle abarbeitet. Irgendwie muss die ID ja in eine Variable oder so übernommen werden und dann eine Schleife oder so angelegt werden.

                        Gruß
                        Thomas

                        1 Reply Last reply Reply Quote 0
                        • T Offline
                          ThomasH
                          last edited by

                          Hallo,

                          hat noch jemand einen Tipp für den letzten Schritt, den ich noch anpassen muss? Bin doch glaub so kurz vor dem Ziel.

                          LG
                          Thomas

                          M 1 Reply Last reply Reply Quote 0
                          • M Offline
                            middend i-doit Kenner @ThomasH
                            last edited by

                            Hi Thomas,

                            hab noch Tips, aber zurzeit keine Zeit das runterzuschreiben. Denke ich kann Dir was bis Mitte nächster Woche schreiben.
                            Gruss,

                            Jörg

                            1 Reply Last reply Reply Quote 0
                            • T Offline
                              ThomasH
                              last edited by

                              Hi Jörg,

                              das wäre klasse, wenn das klappt.

                              VG
                              Thomas

                              M 1 Reply Last reply Reply Quote 0
                              • M Offline
                                middend i-doit Kenner
                                last edited by middend

                                Hi Thomas,

                                also wenn du das in einer Shell ausführst, würde ich die IDs aus dem Output extrahieren z.B |python -m json.tool am ende deines api calls.

                                Dann bekommste einen strukturierten Output. Dann kannste du die ids: rausfiltern und dann eine schleife drüber laufen lassen.

                                zB.
                                for id in api.call| |python -m json.tool |grep id |awk -F":" '{print $2}' # vor api und am Ende nach ' kommen noch backticks, die werden hier aber nicht angezeigt 🙂
                                do
                                curl
                                --data '
                                {
                                "version": "2.0",
                                "method": "cmdb.object.archive",
                                "params": {
                                "object": $id,
                                "apikey": "xxx",
                                "language": "de"
                                },
                                "id": 1
                                }'
                                --header "Content-Type: application/json"
                                https://idoit.domain.de/src/jsonrpc.php

                                done

                                wichtig dabei ist, dass nur die ID in der id Variable steht und keine weiteren Zeichen mehr. Kannste ja am besten vorher mal den Filter erstellen und testen.

                                Sollte dann so eigentlich ganz gut funktionieren. Also das hier wäre jetzt für ne bash. Ich weiss ja nicht was deine bevorzugte Programmiersprache ist. aber mit python, perl etc geht das auch.

                                1 Reply Last reply Reply Quote 0
                                • M Offline
                                  middend i-doit Kenner
                                  last edited by middend

                                  es funktioniert auch sehr gut mit dem jq tool (https://stedolan.github.io/jq/download/)

                                  Die Ids bekommste dann so :
                                  api.call | jq -r '.result[]?.ID'

                                  Das ist noch etwas schöner als die Lösung oben 🙂

                                  1 Reply Last reply Reply Quote 0
                                  • M Offline
                                    middend i-doit Kenner @ThomasH
                                    last edited by

                                    @ThomasH haste mal probiert, ob Du so zurecht kommst oder gibts noch Probleme?

                                    Gruss,
                                    Jörg

                                    1 Reply Last reply Reply Quote 0
                                    • T Offline
                                      ThomasH
                                      last edited by

                                      Hallo @middend

                                      vielen Dank für die Nachfrage.

                                      Ich habe es tatsächlich noch nicht geschafft damit zum Ziel zu kommen. Ich habe inzwischen idoitcli installiert. Die Dokumentation hierzu und zur Nutzung fand ich als Linux newbe ziemlich dürftig.
                                      Wie man hier nun die Schleifen definiert das dann die Ergebnisse verarbeitet werden ist mir nach wie vor nicht klar.

                                      Viele Grüße
                                      Thomas

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post